Follow API
팔로우 등록
HTTP Request
POST /api/v1/follow/2 HTTP/1.1
X-CSRF-TOKEN: YAr9Y8sl2azAifB7nX4ZkpFAsRveHGTOAdXk_eHOcw-LBikQUm_KAKhGvJnt65JOrFMtq_NwnCK8egDjMbOHxdmoQz28Yhly
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
| Parameter | Description |
|---|---|
|
팔로우할 유저 ID |
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
내가 팔로우 하는 유저 목록 조회
HTTP Request
GET /api/v1/follow/1/following?page=0&size=20 HTTP/1.1
X-CSRF-TOKEN: GhKH8pQ2oG_n62PsjDUNJ8hn3W-QuWDhyxVB7zf8-tUZM7h5LnbmkPAGxlfK0lHdtBg5Rf8C8FeogAbM_Sxz3Qeew-YvA9pJ
Host: localhost:8080
| Parameter | Description |
|---|---|
|
유저 ID |
| Parameter | Description |
|---|---|
|
페이지 번호 |
|
데이터 수 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 281
{
"users" : [ {
"id" : 1,
"nickname" : "zl존",
"tag" : "@Hotoran",
"profileImagePath" : "sample-profile-image-url"
}, {
"id" : 2,
"nickname" : "DrangeWoo",
"tag" : "@timel2ss",
"profileImagePath" : "sample-profile-image-url"
} ]
}
| Path | Type | Description |
|---|---|---|
|
|
팔로우 유저 목록 |
|
|
유저 ID |
|
|
유저 닉네임 |
|
|
유저 태그 |
|
|
유저 프로필 이미지 경로 |
나를 팔로우 하는 유저 목록 조회
HTTP Request
GET /api/v1/follow/1/followed?page=0&size=20 HTTP/1.1
X-CSRF-TOKEN: 40H0vh9QeH6vizhK6-kvRBBf7rUtoilOoPxh7_Xcod_TiVb_hiCQ2HszSU2CuAx_3cQbdnJtw9dLl09jlp5U15O_kufjvTfO
Host: localhost:8080
| Parameter | Description |
|---|---|
|
유저 ID |
| Parameter | Description |
|---|---|
|
페이지 번호 |
|
데이터 수 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 281
{
"users" : [ {
"id" : 1,
"nickname" : "zl존",
"tag" : "@Hotoran",
"profileImagePath" : "sample-profile-image-url"
}, {
"id" : 2,
"nickname" : "DrangeWoo",
"tag" : "@timel2ss",
"profileImagePath" : "sample-profile-image-url"
} ]
}
| Path | Type | Description |
|---|---|---|
|
|
팔로우 유저 목록 |
|
|
유저 ID |
|
|
유저 닉네임 |
|
|
유저 태그 |
|
|
유저 프로필 이미지 경로 |
팔로우 삭제
HTTP Request
DELETE /api/v1/follow/2 HTTP/1.1
X-CSRF-TOKEN: rcXZ7ftldrclJd9jXkssJwyEPfvVuTd9Lc8KZOCUVorxXRdnz_fv2J5TENIIEe0CaGYYRWi9EJmzi1JQG_g9UoasNb7BOS9T
Host: localhost:8080
| Parameter | Description |
|---|---|
|
팔로우를 취소할 유저 ID |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Toon API
웹툰 등록
HTTP Request
$ curl 'http://localhost:8080/api/v1/toon' -i -X POST \
-H 'Content-Type: text/plain' \
-H 'X-CSRF-TOKEN: qqfvs_nny0o9YGs4zvzBoX59YdjixNTn8KAKX6i3-zE97TvQyJ7bhp-FrXkQAVMJ_dH1xxhNTOHQobDKwMRsOc3WnQcPj1rg' \
-F 'title=sample-title' \
-F 'description=sample-description' \
-F 'toonImages=@sample1.png;type=multipart/form-data' \
-F 'toonImages=@sample2.png;type=multipart/form-data'
| Part | Description |
|---|---|
|
웹툰 제목 |
|
웹툰 설명 |
|
웹툰 이미지 리스트 |
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 20
{
"toonId" : 1
}
| Path | Type | Description |
|---|---|---|
|
|
생성된 웹툰 ID |
웹툰 삭제
HTTP Request
DELETE /api/v1/toon/1 HTTP/1.1
X-CSRF-TOKEN: 8B7JvalUlKMboVd8tiohSluTAglR02cmDSwVmuP1fT1SQykRknv5jchmo8c2k2NPjgcVeT-nLzBitl4LbE0k_NHHGFxidB5w
Host: localhost:8080
| Parameter | Description |
|---|---|
|
웹툰 ID |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
웹툰 정보 조회
HTTP Request
GET /api/v1/toon/1 HTTP/1.1
X-CSRF-TOKEN: wJ8x0sywkGzd568CZRH3XWXjwwhtZkIuDcqgHjeC8rRNlszj9a5U462Fplrwgsw3UjzDP13X7jFZAHQDPfnDf1LmkId-8P2C
Host: localhost:8080
| Parameter | Description |
|---|---|
|
웹툰 ID |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 362
{
"id" : 1,
"title" : "sample-title",
"description" : "sample-description",
"thumbnailUrl" : "toons/1/1-thumb.png",
"authorId" : 3,
"authorNickname" : "sample-author",
"profileImageUrl" : "profileImages/1.png",
"imagePaths" : [ "toons/1/1-0.png", "toons/1/1-1.png" ],
"viewCount" : 100,
"likeCount" : 42,
"likeStatus" : "LIKE"
}
| Path | Type | Description |
|---|---|---|
|
|
만화 ID |
|
|
만화 제목 |
|
|
만화 설명 |
|
|
작가 유저 ID |
|
|
작가 이름 |
|
|
작가 프로필 이미지 경로 |
|
|
만화 썸네일 url |
|
|
만화 이미지 경로 |
|
|
만화 조회수 |
|
|
만화 좋아요수 |
|
|
만화 좋아요 상태 (LIKE/DISLIKE/NONE) |
유저가 등록한 웹툰 리스트 조회
HTTP Request
GET /api/v1/toon/user/1 HTTP/1.1
X-CSRF-TOKEN: MlkIbc_bVg-iy6WO47D7BbWDhF6pqfkHBWSAEa_AGctjanC7Vjw7Dq66ZjeP_cPr2p3PY4KyqWaanc0qZgC5KJv3LfsGX0fa
Host: localhost:8080
| Parameter | Description |
|---|---|
|
유저 ID |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 416
{
"cartoons" : [ {
"id" : 1,
"title" : "김영현의 모험1",
"author" : "king",
"thumbnailUrl" : "toons/1/1-thumb.png"
}, {
"id" : 6,
"title" : "김영현의 모험2",
"author" : "king",
"thumbnailUrl" : "toons/6/6-thumb.png"
}, {
"id" : 12,
"title" : "김영현의 모험3",
"author" : "king",
"thumbnailUrl" : "toons/12/12-thumb.png"
} ]
}
| Path | Type | Description |
|---|---|---|
|
|
만화 목록 |
|
|
만화 ID |
|
|
만화 제목 |
|
|
작가 닉네임 |
|
|
만화 썸네일 경로 |
웹툰 조회수 상승
HTTP Request
POST /api/v1/toon/1/view HTTP/1.1
X-CSRF-TOKEN: BzOBK_emnRjhQWLJk8ZOZX2RO7Pl7_Hyc5uE7RmuohFhJr2oMVCxSMGWrSzMJQT7pet6B0umFtLUisHfQ_iz2iGel3MAQ4md
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
| Parameter | Description |
|---|---|
|
웹툰 ID |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
웹툰 정보 변경
HTTP Request
PATCH /api/v1/toon/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 73
X-CSRF-TOKEN: S8QvIQWB8PnrxjSlfJHmE3a30XwlAo4stjFUzmwKHrExWgRzL6ZLRTW1lc_G9wDEHrzSdRKO_B4TYb0B0wRs-Vw9etNUbWJG
Host: localhost:8080
{
"title" : "update-title",
"description" : "update-description"
}
| Parameter | Description |
|---|---|
|
웹툰 ID |
| Path | Type | Description |
|---|---|---|
|
|
변경할 제목 |
|
|
변경할 설명 |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
이미지 삽입
HTTP Request
$ curl 'http://localhost:8080/api/v1/toon/1/image/3' -i -X POST \
-H 'Content-Type: multipart/form-data' \
-H 'X-CSRF-TOKEN: cMKV_AjMasS8znZ_VyOJEoVdYO7Rel00bbLxOKmWbBPPuvBDE_qty2yuWPSRr0FGMw69cbxtTdfmSmwZD9fGXZCmD3L8icJ0' \
-F 'image=@sample1.png;type=multipart/form-data'
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 35
{
"path" : "toons/1/1-12.png"
}
| Path | Type | Description |
|---|---|---|
|
|
새로 삽입된 이미지 경로 |
이미지 삭제
HTTP Request
DELETE /api/v1/toon/1/image/3 HTTP/1.1
X-CSRF-TOKEN: GRa4-eZ_zZe61hytwzesAJ1STFaao_IpMWIY024KXbzrlS_6eCDdmN9P-66X5y-d9xqYNPhnYW6ikcoECFMr5Qoya4SO9E7N
Host: localhost:8080
| Parameter | Description |
|---|---|
|
웹툰 ID |
|
삭제 위치 |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Search API
유저 검색
HTTP Request
keyword: "김영현"
GET /api/v1/search/user?keyword=%EA%B9%80%EC%98%81%ED%98%84&page=0&size=5 HTTP/1.1
X-CSRF-TOKEN: hjh6nuho59tw8fj0U4z4upkt6T0I5kdYLMsqJsOjV_SZhYG54gsY_Ixa3r1dxM-RZ6HM36tPxFw93n51HfwaFfrCZpes57DY
Host: localhost:8080
| Parameter | Description |
|---|---|
|
검색 키워드 |
|
페이지 번호 |
|
데이터 수 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 428
{
"users" : [ {
"id" : 1,
"nickname" : "김영현 광팬",
"tag" : "@chocoSongEE",
"profileImagePath" : "profileImages/1.png"
}, {
"id" : 2,
"nickname" : "김영현",
"tag" : "@Kinggggg",
"profileImagePath" : "profileImages/1.png"
}, {
"id" : 7,
"nickname" : "패션개발자김영현",
"tag" : "@Fashion",
"profileImagePath" : "profileImages/1.png"
} ]
}
| Path | Type | Description |
|---|---|---|
|
|
유저 정보 목록 데이터 |
|
|
유저 ID |
|
|
유저 닉네임 |
|
|
유저 태그 |
|
|
유저 프로필 이미지 경로 |
웹툰 검색
HTTP Request
keyword: "김영현"
GET /api/v1/search/toon?keyword=%EA%B9%80%EC%98%81%ED%98%84&page=0&size=5 HTTP/1.1
X-CSRF-TOKEN: ybYH6w7gmVnu3nQrjb0aZS17va7fawhejYN3D-w49MJe_Py-8dVl3DfVrDrD6kQd6ZAuAxxOkJe5DT5z6-cWadkLkadunpmJ
Host: localhost:8080
| Parameter | Description |
|---|---|
|
검색 키워드 |
|
페이지 번호 |
|
데이터 수 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 288
{
"cartoons" : [ {
"id" : 1,
"title" : "김영현의 모험",
"author" : "김승환",
"thumbnailUrl" : "toons/1/1-thumb.png"
}, {
"id" : 3,
"title" : "용사 김영현",
"author" : "김승환",
"thumbnailUrl" : "toons/3/3-thumb.png"
} ]
}
| Path | Type | Description |
|---|---|---|
|
|
만화 정보 목록 데이터 |
|
|
만화 ID |
|
|
만화 제목 |
|
|
작가 이름 |
|
|
만화 썸네일 url |
Collection API
컬렉션 생성
HTTP Request
POST /api/v1/collection/create HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 52
X-CSRF-TOKEN: J7CtjxyM46aVudEhOo2WIg3Is54WHTD9WKiqUTwekQZZImw6Q9GVvCu80se43ORCCqCiETyqnv8uJFbQasyTZAkoqTNqFlwK
Host: localhost:8080
{
"title" : "sample-title",
"closed" : true
}
| Path | Type | Description |
|---|---|---|
|
|
Collection 제목 |
|
|
비공개 여부 (true: 비공개, false: 공개) |
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 26
{
"collectionId" : 1
}
| Path | Type | Description |
|---|---|---|
|
|
생성된 Collection ID |
컬렉션 삭제
HTTP Request
DELETE /api/v1/collection/1 HTTP/1.1
X-CSRF-TOKEN: T1ucYjMGmYWnrfj1GUwnwaWIJPRmspSGLvG9_QnDcCrf5fd9fD-oAAZnq7WKmcvMKWET-JO_CZVRh62rS5KKz2unRUzn3cIf
Host: localhost:8080
| Parameter | Description |
|---|---|
|
Collection ID |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
컬렉션 리스트 조회
HTTP Request
GET /api/v1/collection/author/1?page=0&size=30 HTTP/1.1
X-CSRF-TOKEN: uf1E8_89WUTaNOOP9sjz3SowAUyq_We_xESeGRVfkMtkn4nTi8p1kcgNayf3A9XsxeXHuxgDLHTPxQGS_CauLyc6oPJRrbzn
Host: localhost:8080
| Parameter | Description |
|---|---|
|
조회할 유저 ID |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 492
{
"collectionInfos" : [ {
"id" : 1,
"title" : "title1",
"closed" : false,
"thumbnailPaths" : [ ]
}, {
"id" : 2,
"title" : "title2",
"closed" : false,
"thumbnailPaths" : [ "cartoon/thumbnail-path/1", "cartoon/thumbnail-path/2" ]
}, {
"id" : 3,
"title" : "title3",
"closed" : true,
"thumbnailPaths" : [ "cartoon/thumbnail-path/1", "cartoon/thumbnail-path/2", "cartoon/thumbnail-path/3", "cartoon/thumbnail-path/4" ]
} ]
}
| Path | Type | Description |
|---|---|---|
|
|
Collection 목록 데이터 |
|
|
Collection ID |
|
|
Collection 제목 |
|
|
Collection 비공개 여부 (true: 비공개 | false: 공개) |
|
|
Collection의 대표 북마크 썸네일 4개 |
Bookmark API
북마크 생성
HTTP Request
POST /api/v1/collection/1/1 HTTP/1.1
X-CSRF-TOKEN: yc1z8eNEUl2WF07QvILouFsIiSB-8HpDuN0N_UFqxwj-p5ue_v9EwNcmZWW7cijp3a_c3Wk8pEJMwU9uge88z3RfoWmfwaOm
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
| Parameter | Description |
|---|---|
|
Collection ID |
|
웹툰 ID |
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 24
{
"bookmarkId" : 1
}
| Path | Type | Description |
|---|---|---|
|
|
생성된 Bookmark ID |
북마크 삭제
HTTP Request
DELETE /api/v1/bookmark/1 HTTP/1.1
X-CSRF-TOKEN: 4Iik6lPHlNjVOq922QFRybsKaP7d5XaRVvjOMIlO8jDZMBf60r6QiTbwrO34DpZFuixl-ItvRcbq0kG8YJyvVLArkFK8VXLN
Host: localhost:8080
| Parameter | Description |
|---|---|
|
북마크 ID |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
북마크 리스트 조회
HTTP Request
GET /api/v1/collection/1?page=0&size=5 HTTP/1.1
X-CSRF-TOKEN: iSnA8TC0knZazzBgqPYuyM-hE1dX2CjDRog3gb8r0HOwsG6Xux-mxFOAoEV3qVVWmdsarfrEPjU1vRruJ7kAuY0e50SHiV6i
Host: localhost:8080
| Parameter | Description |
|---|---|
|
조회할 Collection ID |
Query Parameters
| Parameter | Description |
|---|---|
|
페이지 번호 |
|
데이터 수 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 460
{
"bookmarkInfos" : [ {
"bookmarkId" : 1,
"cartoonId" : 2,
"cartoonTitle" : "cartoon-title-1",
"thumbnailPath" : "cartoon/thumbnail-path/1"
}, {
"bookmarkId" : 2,
"cartoonId" : 4,
"cartoonTitle" : "cartoon-title-2",
"thumbnailPath" : "cartoon/thumbnail-path/2"
}, {
"bookmarkId" : 3,
"cartoonId" : 7,
"cartoonTitle" : "cartoon-title-3",
"thumbnailPath" : "cartoon/thumbnail-path/3"
} ]
}
| Path | Type | Description |
|---|---|---|
|
|
북마크 목록 데이터 |
|
|
북마크 ID |
|
|
북마크한 웹툰 ID |
|
|
북마크한 웹툰 제목 |
|
|
북마크한 웹툰 썸네일 이미지 경로 |
Like API
좋아요
HTTP Request
POST /api/v1/like/1 HTTP/1.1
X-CSRF-TOKEN: Vvyc8SqVWlKLuYGgj59M1TRIz93Go1BKWgLycDYhHQY3NfITNMT6lR_3azamgeCX7LJ45lYs4uT1mmdnODKQE1QYJTUPBJQh
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
| Parameter | Description |
|---|---|
|
웹툰 ID |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
싫어요
HTTP Request
POST /api/v1/dislike/1 HTTP/1.1
X-CSRF-TOKEN: MSIkP2yCIwGaDmAkCQwneYDkSVkd5xLGFgKTkbKQMGws1Kw-BEAWCQ7hQjC3OVJAbSETG7jVZGB50ifrL2D29YKoBVpJ4p1c
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
| Parameter | Description |
|---|---|
|
웹툰 ID |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Comment API
댓글 등록
HTTP Request
| Parameter | Description |
|---|---|
|
웹툰 ID |
POST /api/v1/comment/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 36
X-CSRF-TOKEN: cPIfPc_TmbmQx9gtKXZ3qKDI0i0o47gNf_kBlEgdTJhOi9BRQMIqXK7kqty98btLEVtDn8aq_08fhYogS84y8nl4eP18s-U0
Host: localhost:8080
{
"content" : "sample-content"
}
| Path | Type | Description |
|---|---|---|
|
|
댓글 내용 (200자 이내) |
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 23
{
"commentId" : 1
}
| Path | Type | Description |
|---|---|---|
|
|
생성된 댓글 ID |
댓글 삭제
HTTP Request
DELETE /api/v1/comment/1 HTTP/1.1
X-CSRF-TOKEN: aEqHBQx2oJRFuyMc3BD9AyfPB7wXOKpiMwDuEsGEoRnWy3deWXy-PG0SxaNojUJ96j3JYkH5KoQmWZxPVTKPJfa0x3-3qEM4
Host: localhost:8080
| Parameter | Description |
|---|---|
|
댓글 ID |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
웹툰 댓글 조회
HTTP Request
GET /api/v1/comment/1?page=0&size=10 HTTP/1.1
X-CSRF-TOKEN: bMWBZz9bqdsrzy_t335hiRqGlC1c5lN5bsQkOKyljW-HwwrxWaO2UQppkesG9h2PvFNV7CmyuRRtg2ZUDaAdXMjDtVax8zqS
Host: localhost:8080
| Parameter | Description |
|---|---|
|
웹툰 ID |
| Parameter | Description |
|---|---|
|
페이지 번호 |
|
데이터 수 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1348
{
"comments" : [ {
"commentId" : 1,
"userInfo" : {
"id" : 1,
"nickname" : "Hotoran",
"tag" : "hoto_ran",
"profileImagePath" : "thumnnail/path/1"
},
"content" : "sample 1",
"myComment" : true,
"createdDateTime" : "2023-11-01T09:17:11",
"modifiedDateTime" : "2023-11-01T09:17:11"
}, {
"commentId" : 5,
"userInfo" : {
"id" : 2,
"nickname" : "Lepetit",
"tag" : "iced3974",
"profileImagePath" : "thumnnail/path/2"
},
"content" : "sample 2",
"myComment" : false,
"createdDateTime" : "2023-11-01T09:17:11",
"modifiedDateTime" : "2023-11-01T09:17:11"
}, {
"commentId" : 12,
"userInfo" : {
"id" : 3,
"nickname" : "Kimasds",
"tag" : "kimyy333",
"profileImagePath" : "thumnnail/path/3"
},
"content" : "sample 3",
"myComment" : false,
"createdDateTime" : "2023-11-01T09:17:11",
"modifiedDateTime" : "2023-11-01T09:17:11"
}, {
"commentId" : 13,
"userInfo" : {
"id" : 4,
"nickname" : "LEEEEEE",
"tag" : "timel2ss",
"profileImagePath" : "thumnnail/path/4"
},
"content" : "sample 4",
"myComment" : false,
"createdDateTime" : "2023-11-01T09:17:11",
"modifiedDateTime" : "2023-11-01T09:17:11"
} ]
}
| Path | Type | Description |
|---|---|---|
|
|
댓글 데이터 |
|
|
댓글 ID |
|
|
댓글 유저 정보 |
|
|
댓글 유저 ID |
|
|
댓글 유저 닉네임 |
|
|
댓글 유저 태그 |
|
|
댓글 유저 프로필이미지 경로 |
|
|
댓글 내용 |
|
|
자신의 댓글 여부 (true: 조회한 유저의 댓글 | false: 다른 사람) |
|
|
댓글 생성 시각 |
|
|
댓글 수정 시각 |
자신이 작성한 댓글 조회
HTTP Request
GET /api/v1/comment/myComment?page=0&size=10 HTTP/1.1
X-CSRF-TOKEN: lAONmgYlDZlz_jR4ne8-U-OB0yHzpQLHtxlemyeLZb5aKJjuoTa1_mBEOfhexgUbqcIKN9ay_kOXlGfqh3tvoxO7UIw5Sv6K
Host: localhost:8080
| Parameter | Description |
|---|---|
|
페이지 번호 |
|
데이터 수 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1123
{
"comments" : [ {
"commentId" : 1,
"cartoonId" : 12,
"cartoonTitle" : "김영현의 모험1",
"cartoonThumbnailUrl" : "김영현",
"content" : "thumbnail/path/1",
"createdDateTime" : "2023-11-01T09:17:11",
"modifiedDateTime" : "2023-11-01T09:17:11"
}, {
"commentId" : 2,
"cartoonId" : 14,
"cartoonTitle" : "이세계 용사 김영현",
"cartoonThumbnailUrl" : "SPR",
"content" : "thumbnail/path/2",
"createdDateTime" : "2023-11-01T09:17:11",
"modifiedDateTime" : "2023-11-01T09:17:11"
}, {
"commentId" : 3,
"cartoonId" : 25,
"cartoonTitle" : "태어나보니 김영현",
"cartoonThumbnailUrl" : "Inkojava",
"content" : "thumbnail/path/3",
"createdDateTime" : "2023-11-01T09:17:11",
"modifiedDateTime" : "2023-11-01T09:17:11"
}, {
"commentId" : 4,
"cartoonId" : 43,
"cartoonTitle" : "김영현의 모험2",
"cartoonThumbnailUrl" : "김영현",
"content" : "thumbnail/path/4",
"createdDateTime" : "2023-11-01T09:17:11",
"modifiedDateTime" : "2023-11-01T09:17:11"
} ]
}
| Path | Type | Description |
|---|---|---|
|
|
댓글 데이터 |
|
|
댓글 ID |
|
|
댓글 단 웹툰 ID |
|
|
댓글 단 웹툰 제목 |
|
|
댓글 단 웹툰 썸네일 URL |
|
|
댓글 내용 |
|
|
댓글 생성 시각 |
|
|
댓글 수정 시각 |
Authentication API
로그인
HTTP Request
POST /api/v1/login HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 67
X-CSRF-TOKEN: leNCfyi3-8dxYl34x6N55ThAU2NM0_txxBUJ7JPRUOqebarHpNQjTEmHmf9cVTnNpo5N3AFzfgIp48lc8XQ91fbkYd-oWp2j
Host: localhost:8080
{
"email" : "sample@email.com",
"password" : "q1w2e3r4!@#"
}
| Path | Type | Description |
|---|---|---|
|
|
이메일 주소 (이메일 형식) |
|
|
비밀번호 (20자 이내) |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 429
{
"userId" : 1,
"accessToken" : "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzYW1wbGVAZW1haWwuY29tIiwiZW1haWwiOiJzYW1wbGVAZW1haWwuY29tIiwiaWF0IjoxNjkxODQ5NDU1LCJleHAiOjE2OTE4NTEyNTV9.P_clLb6hZOQ9gHtzhW5-7bFgSbWBaqVnS7AVF-yJ9Qs",
"refreshToken" : "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzYW1wbGVAZW1haWwuY29tIiwiZW1haWwiOiJzYW1wbGVAZW1haWwuY29tIiwiaWF0IjoxNjkxODQ5NDU1LCJleHAiOjE2OTMwNTkwNTV9.mTA7MeINcCshC7Oz5rY6R8RVX8TxrSFgakKBqIhK9pY"
}
| Path | Type | Description |
|---|---|---|
|
|
유저 ID |
|
|
access 토큰 (ttl 30분) |
|
|
refresh 토큰 (ttl 7일) |
토큰 재발행
HTTP Request
POST /api/v1/token/reissue HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 208
X-CSRF-TOKEN: rZ04AM7pdpxKZvLsyesGrk8944yoQZ5pbbja1KejMcOTaoBdzKUBN_7fE6RnVJHV-8Yym3wLzu6bIqhECdnj4JKWVaaiXrA7
Host: localhost:8080
{
"refreshToken" : "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzYW1wbGVAZW1haWwuY29tIiwiZW1haWwiOiJzYW1wbGVAZW1haWwuY29tIiwiaWF0IjoxNjkxODQ5NDU1LCJleHAiOjE2OTMwNTkwNTV9.mTA7MeINcCshC7Oz5rY6R8RVX8TxrSFgakKBqIhK9pY"
}
| Path | Type | Description |
|---|---|---|
|
|
refresh 토큰 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 412
{
"accessToken" : "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzYW1wbGVAZW1haWwuY29tIiwiZW1haWwiOiJzYW1wbGVAZW1haWwuY29tIiwiaWF0IjoxNjkxODQ5NDU1LCJleHAiOjE2OTE4NTEyNTV9.P_clLb6hZOQ9gHtzhW5-7bFgSbWBaqVnS7AVF-yJ9Qs",
"refreshToken" : "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzYW1wbGVAZW1haWwuY29tIiwiZW1haWwiOiJzYW1wbGVAZW1haWwuY29tIiwiaWF0IjoxNjkxODQ5NDU1LCJleHAiOjE2OTMwNTkwNTV9.mTA7MeINcCshC7Oz5rY6R8RVX8TxrSFgakKBqIhK9pY"
}
| Path | Type | Description |
|---|---|---|
|
|
access 토큰 (ttl 30분) |
|
|
refresh 토큰 (ttl 7일) |
User API
회원가입
HTTP Request
POST /api/v1/signup HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 156
X-CSRF-TOKEN: bHDkpEYHhCe6_tubOerIbs2scL9Fzrr-uB5MJL_QHiNu83ejXRaCkHY3s0aXmrn4WMf8XP3JXd10-djT3n18QtrkJhIKxkLB
Host: localhost:8080
{
"name" : "sample_name",
"nickname" : "sample_nickname",
"tag" : "sample_tag",
"email" : "sample@email.com",
"password" : "!@#sAmple1234"
}
| Path | Type | Description |
|---|---|---|
|
|
이름 (20자 이내) |
|
|
닉네임 (20자 이내) |
|
|
태그 (15자 이내, 영문, 특수문자(_.) 허용 |
|
|
이메일 주소 (이메일 형식) |
|
|
비밀번호 (8자 이상, 20자 이내, 영어 소문자/숫자/특수문자(!@#$%^&*~?) 1개 이상 포함) |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 20
{
"userId" : 1
}
| Path | Type | Description |
|---|---|---|
|
|
유저 ID |
유저 정보 조회
HTTP Request
GET /api/v1/user/1 HTTP/1.1
X-CSRF-TOKEN: g15MR1eoT5t92QW3vTt0AI5s1p2Ecpr5h46t3p6TZV5vW9yw5zgpcjSYK6NQuzCCjBZAZOxa-_-3RvzU5r2Yv6unBmgMa7_V
Host: localhost:8080
| Parameter | Description |
|---|---|
|
조회할 유저 ID |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 222
{
"id" : 1,
"nickname" : "sample-nickname",
"tag" : "sample-tag",
"profileImagePath" : "sample-path",
"statusMessage" : "sample-message",
"followerCount" : 20,
"followCount" : 42,
"follow" : true
}
| Path | Type | Description |
|---|---|---|
|
|
조회된 유저 ID |
|
|
조회된 유저 닉네임 |
|
|
조회된 유저 태그 |
|
|
조회된 유저 프로필 이미지 경로 |
|
|
조회된 유저 상태메시지 |
|
|
팔로우 여부 |
|
|
나를 팔로우 하는 유저 수 |
|
|
내가 팔로우 하는 유저 수 |
유저 태그 중복 검사
HTTP Request
POST /api/v1/user/sample-tag HTTP/1.1
X-CSRF-TOKEN: FEyhD7lPhgSjqy23Zv8CDM5MSr1psXvjYJyd-RFMpPvdCBqbJHzHadx6tTCOnh2GBNI2NKovZ98Pgx_OBP6lzikokMnrbnz9
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
| Parameter | Description |
|---|---|
|
유저 태그 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 26
{
"tagExist" : false
}
| Path | Type | Description |
|---|---|---|
|
|
태그 존재 여부 |
Profile API
프로필 이미지 업로드
HTTP Request
$ curl 'http://localhost:8080/api/v1/user/image/upload' -i -X POST \
-H 'Content-Type: multipart/form-data' \
-H 'X-CSRF-TOKEN: 8CrNV9WXkHvAbqUBGeAM-4rFVLtGkGc9BU9QMEd3HCofq2chkR_7ZuKmoh3tX5NnKs04y7jxeYNwoQEQMntpUXUSKEsqmAUR' \
-F 'profileImage=@sample1.png;type=multipart/form-data'
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 28
{
"profileImageId" : 1
}
| Path | Type | Description |
|---|---|---|
|
|
업로드된 프로필 이미지 ID |
기본 이미지로 프로필 변경
HTTP Request
PATCH /api/v1/user/image/default HTTP/1.1
X-CSRF-TOKEN: _CYdjrczAAqhGFlRab0YZw3_sfIH16vtBZ03pgAv-FhFpOAOnhR47Y8EOTKMe29oWpAsBTnJnMox4ZvANv8PlmMWwWl9l4I4
Host: localhost:8080
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
유저 프로필 정보 변경
HTTP Request
PATCH /api/v1/user HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 108
X-CSRF-TOKEN: 80GePdjPg4YAKXiyO6AQ4N73i72Y-I-JD4zdm8WiEm-qtvBYkXWuXOusteItEE-EX40kg7jFpoT6zumkbbrtqKaUcQ6ThJFo
Host: localhost:8080
{
"nickname" : "김영현",
"tag" : "Kingggg",
"password" : "q1w2e3r4!",
"statusMessage" : ""
}
| Path | Type | Description |
|---|---|---|
|
|
변경할 닉네임 (20자 이내) |
|
|
변경할 태그 (15자 이내, 영문, 특수문자(_.) 허용) |
|
|
변경할 비밀번호 (8자 이상, 20자 이내, 영어 소문자/숫자/특수문자(!@#$%^&*~?) 1개 이상 포함) |
|
|
변경할 상태 메시지 (500자 이내) |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Rank API
유저 랭킹
HTTP Request
GET /api/v1/rank/user?page=0&size=50 HTTP/1.1
X-CSRF-TOKEN: CbK8awx7ahHdk3wE0MtQLO0QPEU1FKpzg-TRePKCkX97CXhrOYSPXDpCWiLwoU4zteZkStRxEX0CJJhesNK0HZPnpEweMUsK
Host: localhost:8080
| Parameter | Description |
|---|---|
|
페이지 번호 |
|
데이터 수 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 524
{
"users" : [ {
"id" : 1,
"nickname" : "hotoran",
"tag" : "@hotoran",
"profileImagePath" : "profileImages/1.png"
}, {
"id" : 5,
"nickname" : "Iced",
"tag" : "@Iced",
"profileImagePath" : "profileImages/1.png"
}, {
"id" : 2,
"nickname" : "chocosongEE",
"tag" : "@chocosongee",
"profileImagePath" : "profileImages/1.png"
}, {
"id" : 6,
"nickname" : "timel2ss",
"tag" : "@timel2ss",
"profileImagePath" : "profileImages/1.png"
} ]
}
| Path | Type | Description |
|---|---|---|
|
|
유저 랭킹 목록 |
|
|
유저 id |
|
|
유저 닉네임 |
|
|
유저 태그 |
|
|
유저 프로필 이미지 경로 |
웹툰 랭킹
HTTP Request
GET /api/v1/rank/toon?page=0&size=50 HTTP/1.1
X-CSRF-TOKEN: hH3HxCiC2DNz2iaqns3fmBjt6BHJvtq3EulrxNZC2y3oPgz1tRv08Ri26gde7USTr-Dr_n7axSmvj-yaI99f9uBy6BraXGiW
Host: localhost:8080
| Parameter | Description |
|---|---|
|
페이지 번호 |
|
데이터 수 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 550
{
"cartoons" : [ {
"id" : 1,
"title" : "김영현의 모험",
"author" : "Kinggg",
"thumbnailUrl" : "toons/1/1-thumb.png"
}, {
"id" : 3,
"title" : "김영현의 모험2",
"author" : "Kinggg",
"thumbnailUrl" : "toons/3/3-thumb.png"
}, {
"id" : 7,
"title" : "김영현의 모험3",
"author" : "Kinggg",
"thumbnailUrl" : "toons/7/7-thumb.png"
}, {
"id" : 2,
"title" : "김영현의 모험4",
"author" : "Kinggg",
"thumbnailUrl" : "toons/2/2-thumb.png"
} ]
}
| Path | Type | Description |
|---|---|---|
|
|
만화 랭킹 목록 |
|
|
만화 id |
|
|
만화 제목 |
|
|
작가 이름 |
|
|
만화 썸네일 url |
Feed API
Feed
HTTP Request
GET /api/v1/feed?page=0&size=10 HTTP/1.1
X-CSRF-TOKEN: hKQWoye2DlolKCAuwVaC2uC3o89QQgppVq6dIv4C_BPI2sFEtpdwlBPVPzsIEBIe8Hu24tiCjq4yJGhEM8r-EJ03mCStvPUm
Host: localhost:8080
| Parameter | Description |
|---|---|
|
페이지 번호 |
|
데이터 수 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 31
{
"feed" : [ 1, 2, 3, 4 ]
}
| Path | Type | Description |
|---|---|---|
|
|
웹툰 ID 목록 |
Exception API
[400] Bad Request 예외
HTTP Request
POST /api/v1/collection/1/1 HTTP/1.1
X-CSRF-TOKEN: ZsT7o2DFCxfq7z5iUPzbUzvSfs0DIMJKukfeEJm3MZffkuAwUvCewgajOSLH310BZtHvYQKwU_Q6RfJnjiO4cq2BCKG5otJS
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
HTTP Response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 74
{
"code" : "400",
"message" : "사용자 권한이 없습니다."
}
| Path | Type | Description |
|---|---|---|
|
|
HTTP 상태 코드 |
|
|
예외 메시지 |
HTTP Request
POST /api/v1/signup HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 178
X-CSRF-TOKEN: 3koYkWvMK7WgMiwBANx6hH6qJ5Y0CpeAgNuDRNvjYiL38Ufy6X9-8l30ToGNBk9lZfFO4B-eCq8EMqCts7-wJ--BUUfAknXC
Host: localhost:8080
{
"name" : "이미 등록된 이메일 주소",
"nickname" : "sample_nickname",
"tag" : "sample_tag",
"email" : "sample@email.com",
"password" : "!@#sAmple1234"
}
HTTP Response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 88
{
"code" : "400",
"message" : "이미 사용 중인 이메일 주소입니다."
}
| Path | Type | Description |
|---|---|---|
|
|
HTTP 상태 코드 |
|
|
예외 메시지 |
HTTP Request
POST /api/v1/token/reissue HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 77
X-CSRF-TOKEN: F3OXe0BTvBfchiZBsWXnfuR6DR3QKoBv834cNSbRK_SmkeECIkb1GiE3iifx4EV1gEjTHdYYICXlErFCl0srVxK3SsWS99A6
Host: localhost:8080
{
"refreshToken" : "로그인 했을 때의 IP 주소와 다른 경우"
}
HTTP Response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 94
{
"code" : "400",
"message" : "잘못된 접근입니다. 다시 로그인하세요."
}
| Path | Type | Description |
|---|---|---|
|
|
HTTP 상태 코드 |
|
|
예외 메시지 |
HTTP Request
POST /api/v1/token/reissue HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 67
X-CSRF-TOKEN: Tr-A0ClDxi3QbRGs-BkM-mR38kDwRzcMGt31KPKDxKrnwaUZdtm14xpx8BT9DCGayDQ4w1FO3yHAfwYhe-nAEZG1oc-DpZZ4
Host: localhost:8080
{
"refreshToken" : "잘못된 토큰 값을 입력한 경우"
}
HTTP Response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 90
{
"code" : "400",
"message" : "유효하지 않거나 만료된 토큰입니다."
}
| Path | Type | Description |
|---|---|---|
|
|
HTTP 상태 코드 |
|
|
예외 메시지 |
HTTP Request
POST /api/v1/signup HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 195
X-CSRF-TOKEN: W71r8OmCDyTFfnO1XmU6SGv1UxkuIKMWPTCBlSPlr6ffY5eEOIRZwIu7NkXoTxLWb0gOf1PDfiEeGcY7DlLj80eHnpTsUaC8
Host: localhost:8080
{
"name" : "sample_name",
"nickname" : "sample_nickname",
"tag" : "sample_tag",
"email" : "이메일 형식이 아님",
"password" : "비밀번호 조건을 달성하지 못함"
}
HTTP Response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 250
{
"code" : "400",
"message" : "잘못된 요청입니다.",
"validation" : {
"password" : "must match \"^(?=.*[a-z])(?=.*\\d)(?=.*[!@#$%^&*~?])[A-Za-z\\d!@#$%^&*~?]{8,20}$\"",
"email" : "must be a well-formed email address"
}
}
| Path | Type | Description |
|---|---|---|
|
|
HTTP 상태 코드 |
|
|
예외 메시지 |
|
|
검증 에러 메시지 |
|
|
검증이 실패한 항목/이유 |
|
|
검증이 실패한 항목/이유 |
HTTP Request
POST /api/v1/follow/2 HTTP/1.1
X-CSRF-TOKEN: iDYSsUFMWxckvYvz1JXUBtG-MlYUYHvsHyPzF9rB8eRMNpOZsVAjhXcvPyIJie2V57jgMeCKH28sWUnBLRTEdu_zkNd8VaGo
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
HTTP Response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 88
{
"code" : "400",
"message" : "요청 데이터를 처리할 수 없습니다."
}
| Path | Type | Description |
|---|---|---|
|
|
HTTP 상태 코드 |
|
|
예외 메시지 |
HTTP Request
$ curl 'http://localhost:8080/api/v1/toon/1/image/3' -i -X POST \
-H 'Content-Type: multipart/form-data' \
-H 'X-CSRF-TOKEN: qjqczrWTcfcmEG9eS5PrUFy77bkMctT14xEnR1yP0dmBExTgz1mu_NTwRcQLIFw_Lb7fZWqJwIFoE7bY1ylBdz-_4ui3cnfS' \
-F 'image=@sample1.png;type=multipart/form-data'
HTTP Response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 100
{
"code" : "400",
"message" : "이미지의 개수는 10개를 초과할 수 없습니다."
}
| Path | Type | Description |
|---|---|---|
|
|
HTTP 상태 코드 |
|
|
예외 메시지 |
[404] Not Found 예외
HTTP Request
GET /api/v1/toon/99999 HTTP/1.1
X-CSRF-TOKEN: 4-UtpYVTBmuMBZGA4s6u8tmGThgzXQtalbRgR_KLVxrLizvb2twew7xnPw-hNKm21eOawOG2Y3kBOGp3odADf5fobijzvQvj
Host: localhost:8080
HTTP Response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 77
{
"code" : "404",
"message" : "존재하지 않는 웹툰입니다."
}
| Path | Type | Description |
|---|---|---|
|
|
HTTP 상태 코드 |
|
|
예외 메시지 |
HTTP Request
POST /api/v1/collection/99999/1 HTTP/1.1
X-CSRF-TOKEN: wVyHRJsAWRbo0jdxdePlyRbP_1ZxhqA4aGzoIugMXK1I_f8q9G-1J_o5aCfFt1UVQ87R-i_40jRJs8MVW1veF9E7P559xZwS
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
HTTP Response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 80
{
"code" : "404",
"message" : "존재하지 않는 콜렉션입니다."
}
| Path | Type | Description |
|---|---|---|
|
|
HTTP 상태 코드 |
|
|
예외 메시지 |
HTTP Request
POST /api/v1/token/reissue HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 72
X-CSRF-TOKEN: lEk2OA74Z4sl5DyADK1tTYNd8JLt7V9mGLYazO3nE4HejBVXp3lVDDebVOkI0gy1NIBZL7Bt3fDa3GtLK4Eq_N_eceDtuSNh
Host: localhost:8080
{
"refreshToken" : "Refresh 토큰 유효 기간이 지난 경우"
}
HTTP Response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 100
{
"code" : "404",
"message" : "세션이 만료되었습니다. 다시 로그인하세요."
}
| Path | Type | Description |
|---|---|---|
|
|
HTTP 상태 코드 |
|
|
예외 메시지 |
HTTP Request
GET /api/v1/user/99999 HTTP/1.1
X-CSRF-TOKEN: zMPAkObdIsmpVco249caSB1l9NG41LOFIX7Qav3W7YRcG-NB9fv18tXlR_uEZ_oH0foueSpd2endtYaoFkzkC8rh3eA_LYV2
Host: localhost:8080
HTTP Response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 80
{
"code" : "404",
"message" : "존재하지 않는 사용자입니다."
}
| Path | Type | Description |
|---|---|---|
|
|
HTTP 상태 코드 |
|
|
예외 메시지 |
[500] Internal Server Error 예외
HTTP Request
POST /api/v1/signup HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 156
X-CSRF-TOKEN: 9tHJaZUIqwQu4UVXjuf7W5uHiEFhL1g8Pyover1UWFHv90aqkuStXqxukzcDg3Nku8rPb6q0pXhSGWkRBxsYToRgbWTZlSLJ
Host: localhost:8080
{
"name" : "sample_name",
"nickname" : "sample_nickname",
"tag" : "sample_tag",
"email" : "sample@email.com",
"password" : "!@#sAmple1234"
}
HTTP Response
HTTP/1.1 500 Internal Server Error
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 121
{
"code" : "500",
"message" : "서버 내부 오류가 발생했습니다. 나중에 다시 시도해주세요."
}
| Path | Type | Description |
|---|---|---|
|
|
HTTP 상태 코드 |
|
|
예외 메시지 |