https://play.google.com/store/apps/details?id=com.mashup.molink
- 굵은 글씨로 표시된 Key는 필수값
- 사용자 인증은 JWT를 이용
- Header의 Authorization Key에 JWT <your_token>를 추가하여 request
- ex) JWT eyJ0eXAiOiJKV1QiLCJh
- 관련 문서: Django REST framework JWT
- 회원 가입, 로그인 API 외에 모든 API는 Authenticate required
- 관심사(Category) API
- 폴더(Folder) API
- 링크(Link) API
관심사/사진 url을 가져오는 API
- url
GET /api/v1/categories
status: HTTP 200 OK
[
{
"id": 1,
"name": "개발",
"img_url": "http://blog.rightbrain.co.kr/CMS1/wp-content/uploads/2016/03/00-Syrup-Character_Titlegw.png"
},
{
"id": 2,
"name": "디자인",
"img_url": "https://sejong.korea.ac.kr/mbshome/mbs/kr/images/sub/hakbu/hakbu_info_2017_030100.jpg"
},
{
"id": 3,
"name": "화장품",
"img_url": "https://post-phinf.pstatic.net/MjAxODAyMDdfMjQz/MDAxNTE3OTY4OTI1MzYy.bLREVpZJN3r_g7VR3021Z_E55IqPT9Sm7cRBk-XcOIUg.6kq-mZe8sAwivyPKrfxyupB1DEm47WuKGQe_8DrlXVQg.JPEG/GettyImages-jv11011817.jpg?type=w1200"
}
]
선택한 카테고리 기반으로 폴더를 생성해주는 API
폴더 컬러는 랜덤
-
url
POST /api/v1/categories/folders
-
Body
- category_name_list: "개발,디자인,화장품" (string)
status: HTTP 201 Created
[
{
"id": 1,
"color": "#53bbb4",
"name": "개발",
"created_at": "2019-08-19T18:46:28.083042+09:00"
},
{
"id": 2,
"color": "#838cc7",
"name": "디자인",
"created_at": "2019-08-19T18:46:28.086418+09:00"
},
{
"id": 3,
"color": "#e15258",
"name": "화장품",
"created_at": "2019-08-19T18:46:28.088045+09:00"
}
]
유저가 생성한 모든 상위폴더(부모 폴더가 없는 폴더) 리스트를 보여주는 API
- url
GET /api/v1/folders/all
status: HTTP 201 Created
[
{
"id": 1,
"parent": null,
"color": "#53bbb4",
"name": "개발",
"is_private": false,
"created_at": "2019-08-19T18:46:28.083042+09:00"
},
{
"id": 2,
"parent": null,
"color": "#838cc7",
"name": "디자인",
"is_private": false,
"created_at": "2019-08-19T18:46:28.086418+09:00"
},
{
"id": 3,
"parent": null,
"color": "#e15258",
"name": "화장품",
"is_private": false,
"created_at": "2019-08-19T18:46:28.088045+09:00"
}
]
폴더를 생성하는 API
is_pravate 필드는 입력하지 않을 경우 False 로 설정됨
최상위 폴더일 경우 parent_id 필드에 null을 입력하면 된다.
-
url
POST /api/v1/folders/
-
Body
- name: "코딩",
- color: "#A30000",
- parent_id: 2
- is_private: true,
status: HTTP 201 Created
{
"id": 4,
"name": "코딩",
"color": "#A30000",
"parent_id": 2,
"is_private": true
}
한 개의 폴더에 속해있는 폴더/링크 목록과 같은 계층의 폴더 목록을 보여주는 API
- url
GET /api/v1/folders/{folder_id}
status HTTP 200 OK
{
"folder": {
"id": 1,
"parent": null,
"color": "#53bbb4",
"name": "개발",
"is_private": false,
"created_at": "2019-08-19T18:46:28.083042+09:00"
},
"children_links": [
{
"id": 3,
"name": "링크1 수정",
"url": "https://programmers.co.kr/learn/challenges",
"parent_id": 10
}
],
"children_folders": [
{
"id": 4,
"parent": 1,
"color": "#08CF5D",
"name": "안드로이드",
"is_private": false,
"created_at": "2019-08-20T17:12:29.786653+09:00"
}
],
"sibling_folders": [
{
"id": 4,
"parent": null,
"color": "#A30000",
"name": "음식",
"is_private": false,
"created_at": "2019-08-19T23:03:11.402520+09:00"
},
{
"id": 3,
"parent": null,
"color": "#e15258",
"name": "화장품",
"is_private": false,
"created_at": "2019-08-19T18:46:28.088045+09:00"
},
{
"id": 2,
"parent": null,
"color": "#838cc7",
"name": "디자인",
"is_private": false,
"created_at": "2019-08-19T18:46:28.086418+09:00"
}
]
}
링크를 생성하는 API
-
url
POST /api/v1/links/
-
Body
- name: "프로그래머스-코테연습"
- url: "https://programmers.co.kr/learn/challenges"
- parent_id: 4
status: HTTP 201 Created
{
"id": 1,
"name": "링크1",
"url": "https://programmers.co.kr/learn/challenges",
"parent_id": 4
}
링크를 수정하는 API
필드 값 중 수정을 원하는 필드만 request body에 담아 요청하면 해당 필드만 수정됨
-
url
PUT /api/v1/links/{link_id}
-
Body
- name: "네이버",
- url: "https://www.naver.com/",
- parent_id: 16
status: HTTP 200 OK
{
"name":"네이버",
"url":"https://www.naver.com/",
"parent_id":16
}
링크를 삭제하는 API
- url
DELETE /api/v1/links/{link_id}
status: HTTP 204 NO CONTENT