- Python
- Django
- Django REST Framework
- Crontab
- JWT
- AWS EC2
- AWS RDS (MySQL)
- Git
- Gitkraken
- Notion
-
kakao access_token으로 자체 access, refresh token 발급
-
url
POST /login/new-token/
-
request
{ "access_token": "sBpMzzmjm7rKz3vY1Bs_lIFHuZu5Xt6iiTcjaAopb1UAAAF69oCtMw" }
-
response
{ "refresh": "kpx3rJBWG7GdAGjm9LXlAvYLxB6TaP5HP5kWpT8AbjseEkqODJuIvGLLZJG6pu303TjXlJZjKejY4e6cKNrmU0nLzL84YD57mMXXS5Fpcb2ayLBYedTm6DK03TzxZyAHgYexojcPLZWuSz1T9yuh3xSffvSUPfufInNxuATn9SvdPx9AAopg4m3etJGKkjnZQbnCjyPE", "access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjI4MjM4NTMwLCJqdGkiOiI5YmU0NWUzNWVlN2U0NTIzYWEyOGNmZDJiOGJjMGUzZSIsInVzZXJfaWQiOjMsInVzZXJuYW1lIjoiXHVjNzc0XHVjMjE4XHVjNWYwIiwidWlkIjoxODIzOTM3MzE3fQ.Y4wd-yKfm6z6YLijZX1e9twfQ3kt8nm0rL-LM81cJOQ" }
-
-
refresh token으로 access token 재발급
-
url
POST /login/token/refresh/
-
request
{ "user_id" : 1, "refresh_token" : "Ku88jzG2ZUR9UANJpVwtuGydhhYQsvs9k31Yd4h9FLSQ4NVzai3vaITbWQxXnbFzRc9GFRJDbCJ5IMwNWrdVmQP4pTTtc7nZoqewCD8rGjKgxWXZIQxy2ny1rxDCMJgzypDF2B2ZeMviVsphFONcrO5NzZgjq8OwpDDYZnm7vORbpQwTXbjKQifdgZNgwEkFMJuDbAI2" }
-
response
{ "access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjI3NDY4NDg0LCJqdGkiOiI3NzQ1ZDdmZjkwZDc0YzZlOTI2NDBjMmY2ODRjZDc4NSIsInVzZXJfaWQiOjEsInVzZXJuYW1lIjoiXHVjNzc0XHVjMjE4XHVjNWYwIiwidWlkIjoxODIzOTM3MzE3fQ.LG9Zhe7ICf8O8FgocI75tAY1J77eOR244RMaTUOu8Ks" }
-
-
회원탈퇴
-
url
DELETE /login/withdrawal/
-
request
-
response
{ "detail": "Successful withdrawal of members" }
-
-
studio 전체목록 조회(찜순)
-
url
GET /shops/studios/?page=1&address=&like=
-
request
Parameter Type Description page
integer
Required. pagination address
string
Required. 스튜디오 위치하는 구 필터링 like
boolean
Required. 찜한 studio concept만 볼지(true,false) -
response
{ "count": 3, "next": null, "previous": null, "results": [ { "id": 3, "name": "studio2", "address": "gangdong", "minprice": 600000, "profile": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202926771_02_eJFAEkq.png", "like": true }, { "id": 5, "name": "studio3", "address": "gwangjin", "minprice": 400000, "profile": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202947501_01_Os3pVhB.png", "like": false }, { "id": 1, "name": "studio1", "address": "gangnam", "minprice": 20000, "profile": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202947501.png", "like": true } ] }
-
-
beautyshop 전체목록 조회(찜순)
-
url
GET /shops/beautyshops/?page=1&address=&like=
-
request
Parameter Type Description page
integer
Required. pagination address
string
Required. 뷰티샵아 위치하는 구 필터링 like
boolean
Required. 찜한 studio concept만 볼지(true,false) -
response
{ "count": 3, "next": null, "previous": null, "results": [ { "id": 6, "name": "beautyshop3", "address": "mapo", "minprice": 700000, "profile": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202939803_01_9qKsgcL.png", "like": false }, { "id": 4, "name": "beautyshop2", "address": "gangdong", "minprice": 300000, "profile": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202947501_01_TIPlUXz.png", "like": false }, { "id": 2, "name": "beautyshop1", "address": "gangnam", "minprice": 300000, "profile": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202926771_02.png", "like": true } ] }
-
-
특정 studio,beautyshop 조회(concept제외)
-
url
GET /shops/1
-
request
-
response
{ "id": 1, "name": "studio1", "address_detail": "서울시 강남구 머시기 머시기", "minprice": 20000, "logo": "http://3.35.146.251:8000/media/bpp_U0iusS2.png", "profiles": [ "http://3.35.146.251:8000/media/KakaoTalk_20210802_202947501.png", "http://3.35.146.251:8000/media/KakaoTalk_20210802_202947501_01.png", "http://3.35.146.251:8000/media/KakaoTalk_20210802_202939803.png" ], "like": true, "map": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202926771_01.png", "kakaourl": "https://pf.kakao.com/_xgCxjfj", "affiliates": [ { "id": 4, "name": "beautyshop2", "profile": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202947501_01_TIPlUXz.png" }, { "id": 6, "name": "beautyshop3", "profile": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202939803_01_9qKsgcL.png" } ] }
-
-
특정 studio,beautyshop의 concept 조회(등록순)
-
url
GET /shops/1/concepts
-
request
-
response
{ "count": 2, "next": null, "previous": null, "results": [ { "id": 1, "profile": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202926771_02_5800kq5.png" }, { "id": 2, "profile": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202947501_uzHPVja.png" } ] }
-
-
특정 studio,beautyshop 찜 토글
-
url
PUT /shops/1/like
-
request
{ "change_to_like": false }
-
response
{ "result": "shop like create" }
-
-
studio concept 전체 조회(찜순) : 컨셉북
-
url
GET /concepts/studios/?head_count=&gender=&background=&prop=&dress=&page=&like=
-
request
Parameter Type Description head_count
integer
Required. 1,2,3 gender
string
Required. man,woman background
string
Required. white,black,chromatic,etc,outside prop
string
Required. health,mini,etc dress
string
Required. athleisure,swimsuit,underwear,etc page
string
Required. 조회할 페이지(1,2,3...) like
boolean
Required. 찜한 studio concept만 볼지(true,false) -
response
{ "count": 3, "next": null, "previous": null, "results": [ { "id": 2, "profile": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202947501_uzHPVja.png", "shop": { "id": 1, "name": "studio1" }, "like": false }, { "id": 1, "profile": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202926771_02_5800kq5.png", "shop": { "id": 1, "name": "studio1" }, "like": true }, { "id": 3, "profile": "http://3.35.146.251:8000/media/KakaoTalk_20210802_202926771.png", "shop": { "id": 3, "name": "studio2" }, "like": false } ] }
-
-
특정 studio concept 찜 토글
-
url
PUT /concepts/studios/1/like
-
request
{ "change_to_like": true }
-
response
{ "result": "shop like create" }
-
-
샵 문의중/확정 전체조회
-
url
GET /reservations?inquiry=
-
request
Parameter Type Description inquiry
boolean
Required. 문의중 조회면 true, 확정&만료 조회면 false -
response
{ "remaining_days": 16, "results": [ { "id": 3, "state": 0, "reserved_date": null, "shop": { "id": 2, "shop_type": 1, "name": "beautyshop1", "logo": "http://3.35.146.251:8000/media/bpp_r5ZQYqs.png" } } ] }
-
-
샵 문의중 추가
-
url
POST /reservations/shops/:shop_id
-
request
-
response
{ "result": "reservation create" }
-
-
샵 예약확정 날짜받기
-
url
PATCH /reservations/:reservation_id
-
request
{ "reserved_date": "2021-05-15" }
-
response
{ "detail": "reserved_date input success" }
-
-
샵 문의중 취소
-
url
DELETE /reservations/:reservation_id
-
request
-
response
{ "detail": "reservation delete success" }
-
.
├── Dockerfile
├── README.md
├── concept
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── serializers.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── config
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── login
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── serializers.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── manage.py
├── requirements.txt
├── reservation
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── cron.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── serializers.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── secrets.json
└── shop
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── serializers.py
├── tests.py
├── urls.py
└── views.py