개요
HTTP 동사
본 REST API에서 사용하는 HTTP 동사(verbs)는 가능한한 표준 HTTP와 REST 규약을 따릅니다.
동사 | 용례 |
---|---|
|
리소스를 가져올 때 사용 |
|
새 리소스를 만들 때 사용 |
|
기존 리소스를 수정할 때 사용 |
|
기존 리소스를 삭제할 떄 사용 |
HTTP 상태 코드
본 REST API에서 사용하는 HTTP 상태 코드는 가능한한 표준 HTTP와 REST 규약을 따릅니다.
상태 코드 | 용례 |
---|---|
|
요청을 성공적으로 처리함 |
|
새 리소스를 성공적으로 생성함. 응답의 |
|
기존 리소스를 성공적으로 수정함. |
|
잘못된 요청을 보낸 경우. 응답 본문에 더 오류에 대한 정보가 담겨있다. |
|
서버가 허용하지 않는 리소스를 사용자가 요청할 때 발생한다. |
|
요청한 리소스가 없음. |
Error
에러 응답이 발생했을 때 (상태 코드 >= 300), 본문에 해당 문제를 기술한 JSON 객체가 담겨있다. 에러 객체는 다음의 구조를 따른다.
Response fields
Path | Type | Description |
---|---|---|
|
|
결과코드 |
|
|
결과메시지 |
|
|
에러상세설명 |
|
|
문서 링크 |
예를 들어, 서버가 허용하지 않는 리소스를 사용자가 요청할 때 다음과 같은 403 Forbidden
응답을 받는다.
Example response
HTTP/1.1 403 Forbidden
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 228
{
"resultCode" : 13,
"message" : "권한이 없습니다",
"details" : "uri=/403error",
"_links" : {
"documentation_url" : {
"href" : "http://localhost:8080/docs/index.html#overview-errors"
}
}
}
Result Code
에러 응답의 resultCode
필드의 명세는 다음과 같다.
ResponseState Code
코드 | 설명 |
---|---|
|
기타에러입니다. |
|
성공하였습니다. |
|
잘못된 요청 파라메터 에러입니다. |
|
필수요청 파라미터가 없습니다. |
|
데이터를 찾을 수 없습니다. |
|
서비스 접근이 거부되었습니다. |
|
중복된 데이터입니다. |
|
잘못된 URI입니다. |
|
토큰 에러입니다. |
|
OAuth 인증에러 입니다. |
Common Code
TallType
키의 분류에 대한 코드를 나타낸다.
TallType Code
코드 | 설명 |
---|---|
|
작음 |
|
살짝 작음 |
|
평균 |
|
살짝 큼 |
|
큼 |
BodyType
전체적인 몸의 형태를 설명한다.
BodyType Code
코드 | 설명 |
---|---|
|
날씬 |
|
슬림 |
|
보통 |
|
약간 통통 |
|
통통 |
LocationCategory
사는 지역을 나타낸다.
LocationCategory Code
코드 | 설명 |
---|---|
|
서울 |
|
부산 |
|
대구 |
|
인천 |
|
광주 |
|
대구 |
|
울산 |
|
세종 |
|
경기 |
|
강원 |
|
충북 |
|
충남 |
|
전북 |
|
전남 |
|
경남 |
|
경북 |
|
제주 |
하이퍼미디어
본 REST API는 하이퍼미디어와 사용하며 응답에 담겨있는 리소스는 다른 리소스에 대한 링크를 가지고 있다. 응답은 Hypertext Application from resource to resource. Language (HAL) 형식을 따른다. 링크는 `_links`라는 키로 제공한다. 본 API의 사용자(클라이언트)는 URI를 직접 생성하지 않아야 하며, 리소스에서 제공하는 링크를 사용해야 한다.
User
유저 리소스는 회원가입 및 로그인에 사용된다.
Join
POST
요청을 사용해서 회원 가입을 할 수 있다.
Request headers
Name | Description |
---|---|
|
ACCEPT HEADER: HAL_JSON |
|
CONTENT_TYPE: APPLICAITON_JSON_UTF |
Request fields
Path | Type | Description |
---|---|---|
|
|
회원의 이메일 |
|
|
회원의 비밀번호 |
|
|
회원의 닉네임 |
|
|
회원의 성별 |
|
|
회원의 신장 |
|
|
회원의 체격 |
|
|
회원의 거주지 |
|
|
이상형의 신장 |
|
|
이상형의 체격 |
|
|
이상형의 거주지 |
|
|
회원의 카카오톡 ID |
HTTP request
POST /v1/join HTTP/1.1
Content-Type: application/json;charset=UTF-8
Accept: application/hal+json
Content-Length: 386
Host: localhost:8080
{
"email" : "px2007@naver.com",
"password" : "password123",
"nickName" : "피엑스맛나",
"kakaoId" : "px2007",
"dreamProfiles" : {
"tallType" : "TALL",
"bodyType" : "CHUBBY",
"locationCategory" : "BUSAN"
},
"detailProfiles" : {
"tallType" : "NORMAL",
"bodyType" : "SKINNY",
"locationCategory" : "BUSAN"
},
"sexType" : "MAN"
}
Response headers
Name | Description |
---|---|
|
CONTENT_TYPE: APPLICAITON_JSON_VALUE |
Response fields
Path | Type | Description |
---|---|---|
|
|
회원의 이메일 |
|
|
회원의 닉네임 |
|
|
로그인 링크 |
|
|
문서 링크 |
Example response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 269
{
"email" : "px2007@naver.com",
"nickName" : "피엑스맛나",
"_links" : {
"login" : {
"href" : "http://localhost:8080/v1/login"
},
"documentation_url" : {
"href" : "http://localhost:8080/docs/index.html#user-join"
}
}
}
Links
Relation | Description |
---|---|
|
로그인 링크 |
|
문서 링크 |
Login
POST
요청을 사용해서 OAuth-Token을 얻을 수 있다.
Request headers
Name | Description |
---|---|
|
Authorizaiton: Basic |
Request parameters
Parameter | Description |
---|---|
|
사용자 Email |
|
사용자 password |
|
Grant_Type |
HTTP request
POST /oauth/token HTTP/1.1
Authorization: Basic bXlBcHA6cGFzcw==
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
username=px2007%40naver.com&password=password123&grant_type=password
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
|
Content-Type |
Response fields
Path | Type | Description |
---|---|---|
|
|
Access_Token |
|
|
Token_Type |
|
|
Refresh_Token |
|
|
Expires_in |
|
|
Scope |
|
|
Jti |
Example response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-store
Pragma: no-cache
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Frame-Options: DENY
Content-Length: 850
{
"access_token" : "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc",
"token_type" : "bearer",
"refresh_token" : "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJweDIwMDdAbmF2ZXIuY29tIiwic2NvcGUiOlsicmVhZCIsIndyaXRlIl0sImF0aSI6IjQ2M2FlOGE5LThlODMtNGQwZi1hMTVmLTJkYjQ0ZDhjYzhhYiIsImV4cCI6MTYxNTg4MzQzMSwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6ImM1MzM2ZjRmLTQ3NTEtNDc2Ni1hZWEzLTRiMGQxMGIwNGRhZiIsImNsaWVudF9pZCI6Im15QXBwIn0.0TpoX9DEsVTcy9UC1BPfhT60hb1wB20Cnc1_bVnTCtE",
"expires_in" : 3596,
"scope" : "read write",
"jti" : "463ae8a9-8e83-4d0f-a15f-2db44d8cc8ab"
}
GET
GET
요청을 사용해서 사용자 정보를 조회할 수 있다.
Request headers
Name | Description |
---|---|
|
JSON |
|
Bearer Token |
HTTP request
GET /v1/user HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc
Accept: application/hal+json
Host: localhost:8080
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
|
Content-Type |
Response fields
Path | Type | Description |
---|---|---|
|
|
회원 Primary Key |
|
|
회원의 이메일 |
|
|
회원의 닉네임 |
|
|
회원이 작성한 게시물 수 |
|
|
회원이 작성한 댓글 수 |
|
|
회원의 신장 |
|
|
회원의 체격 |
|
|
회원의 거주지 |
|
|
이상형의 신장 |
|
|
이상형의 체격 |
|
|
이상형의 거주지 |
|
|
회원의 마지막 참가 소개팅 날짜 |
|
|
회원의 카카오톡 ID |
|
|
회원의 성별 |
|
|
Self link |
|
|
내가 쓴 게시물 조회 링크 |
|
|
내가 쓴 댓글 조회 링크 |
|
|
문서 링크 |
Example response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 759
{
"id" : 19,
"email" : "px2007@naver.com",
"nickName" : "피엑스맛나",
"posts" : 0,
"comments" : 0,
"detailProfiles" : {
"tallType" : "NORMAL",
"bodyType" : "SKINNY",
"locationCategory" : "BUSAN"
},
"dreamProfiles" : {
"tallType" : "TALL",
"bodyType" : "CHUBBY",
"locationCategory" : "BUSAN"
},
"kakaoId" : "px2007",
"sexType" : "MAN",
"_links" : {
"self" : {
"href" : "http://localhost:8080/v1/user"
},
"posts" : {
"href" : "http://localhost:8080/v1/user/posts"
},
"comments" : {
"href" : "http://localhost:8080/v1/user/comments"
},
"documentation_url" : {
"href" : "http://localhost:8080/docs/index.html#_get"
}
}
}
Links
Relation | Description |
---|---|
|
Self link |
|
내가 쓴 게시물 목록 |
|
내가 쓴 댓글 목록 |
|
문서 링크 |
UPDATE
PUT
요청을 사용해서 사용자 정보를 수정할 수 있다.
Request headers
Name | Description |
---|---|
|
JSON |
|
Bearer Token |
HTTP request
PUT /v1/user HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc
Accept: application/hal+json
Content-Length: 307
Host: localhost:8080
{
"nickName" : null,
"kakaoId" : "pknubot",
"dreamProfiles" : {
"tallType" : "TALL",
"bodyType" : "CHUBBY",
"locationCategory" : "SEOUL"
},
"detailProfiles" : {
"tallType" : "TALL",
"bodyType" : "SKINNY",
"locationCategory" : "SEOUL"
},
"sexType" : null
}
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
|
Content-Type |
Response fields
Path | Type | Description |
---|---|---|
|
|
회원 Primary Key |
|
|
회원의 이메일 |
|
|
회원의 닉네임 |
|
|
회원의 성별 |
|
|
회원이 작성한 게시물 수 |
|
|
회원이 작성한 댓글 수 |
|
|
회원의 신장 |
|
|
회원의 체격 |
|
|
회원의 거주지 |
|
|
이상형의 신장 |
|
|
이상형의 체격 |
|
|
이상형의 거주지 |
|
|
회원의 마지막 참가 소개팅 날짜 |
|
|
회원의 카카오톡 ID |
|
|
Self link |
|
|
내가 쓴 게시물 조회 링크 |
|
|
내가 쓴 댓글 조회 링크 |
|
|
문서 링크 |
Example response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 758
{
"id" : 20,
"email" : "px2007@naver.com",
"nickName" : "피엑스맛나",
"posts" : 0,
"comments" : 0,
"detailProfiles" : {
"tallType" : "TALL",
"bodyType" : "SKINNY",
"locationCategory" : "SEOUL"
},
"dreamProfiles" : {
"tallType" : "TALL",
"bodyType" : "CHUBBY",
"locationCategory" : "SEOUL"
},
"kakaoId" : "pknubot",
"sexType" : "MAN",
"_links" : {
"self" : {
"href" : "http://localhost:8080/v1/user"
},
"posts" : {
"href" : "http://localhost:8080/v1/user/posts"
},
"comments" : {
"href" : "http://localhost:8080/v1/user/comments"
},
"documentation_url" : {
"href" : "http://localhost:8080/docs/index.html#_get"
}
}
}
Links
Relation | Description |
---|---|
|
Self link |
|
내가 쓴 게시물 목록 |
|
내가 쓴 댓글 목록 |
|
문서 링크 |
`email' 리소스를 통해 사용자 이메일의 존재 여부를 알 수 있다.
Path parameters
Parameter | Description |
---|---|
|
찾을 유저 Email |
Example request
$ curl 'http://localhost:8080/v1/user/email/px2007@naver.com' -i -X GET \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Accept: application/hal+json'
Response fields
Path | Type | Description |
---|---|---|
|
|
결과 |
|
|
Self link |
|
|
문서 링크 |
Example response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Disposition: inline;filename=f.txt
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 218
{
"_links" : {
"self" : {
"href" : "http://localhost:8080/v1/user/email/px2007@naver.com"
},
"documentation_url" : {
"href" : "http://localhost:8080/dd"
}
},
"found" : true
}
Links
Relation | Description |
---|---|
|
Self link |
|
문서 링크 |
Post
유저가 작성한 게시물을 말한다.
GET
GET
요청을 사용해서 페이징된 게시물을 조회할 수 있다.
Request headers
Name | Description |
---|---|
|
JSON |
Request parameters
Parameter | Description |
---|---|
|
조회할 페이지 번호 |
|
페이지 당 게시물 갯수 |
|
정렬 방식 |
HTTP request
GET /v1/posts?page=0&size=2&sort=id,desc HTTP/1.1
Content-Type: application/json;charset=UTF-8
Accept: application/hal+json
Host: localhost:8080
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
|
Content-Type |
Response fields
Path | Type | Description |
---|---|---|
|
|
게시물 Id |
|
|
게시물의 내용 |
|
|
게시물 좋아요 수 |
|
|
게시물 작성자 이메일 |
|
|
게시물 작성자 닉네임 |
|
|
게시물의 마지막 수정일 |
|
|
게시물 댓글 수 |
|
|
현재 로그인한 유저의 좋아요 여부 |
|
|
현재 로그인한 유저의 작성자 여부 |
|
|
게시물 Self link |
|
|
게시물 댓글 조회 link |
|
|
Self link |
|
|
문서 URL |
|
|
첫번째 페이지 링크 |
|
|
다음 페이지 링크 |
|
|
마지막 페이지 링크 |
|
|
페이지 조회 사이즈 |
|
|
페이지 요소의 총 갯수 |
|
|
총 페이지 수 |
|
|
현재 페이지 번호 |
Example response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1681
{
"_embedded" : {
"postModels" : [ {
"id" : 14,
"content" : "test Post10",
"likes" : 0,
"userEmail" : "px2007@naver.com",
"userNickName" : "피엑스맛나",
"modifyDate" : "21/03/16 16:30",
"comments" : 0,
"isLike" : false,
"isWriter" : false,
"_links" : {
"self" : {
"href" : "http://localhost:8080/v1/posts/14"
},
"comments" : {
"href" : "http://localhost:8080/v1/posts/14/comments"
}
}
}, {
"id" : 13,
"content" : "test Post9",
"likes" : 0,
"userEmail" : "px2007@naver.com",
"userNickName" : "피엑스맛나",
"modifyDate" : "21/03/16 16:30",
"comments" : 0,
"isLike" : false,
"isWriter" : false,
"_links" : {
"self" : {
"href" : "http://localhost:8080/v1/posts/13"
},
"comments" : {
"href" : "http://localhost:8080/v1/posts/13/comments"
}
}
} ]
},
"_links" : {
"first" : {
"href" : "http://localhost:8080/v1/posts?page=0&size=2&sort=id,desc"
},
"self" : {
"href" : "http://localhost:8080/v1/posts?page=0&size=2&sort=id,desc"
},
"next" : {
"href" : "http://localhost:8080/v1/posts?page=1&size=2&sort=id,desc"
},
"last" : {
"href" : "http://localhost:8080/v1/posts?page=4&size=2&sort=id,desc"
},
"documentation_url" : {
"href" : "http://localhost:8080/docs/index.html#resources-post"
}
},
"page" : {
"size" : 2,
"totalElements" : 10,
"totalPages" : 5,
"number" : 0
}
}
Links
Relation | Description |
---|---|
|
Self link |
|
문서 URL |
|
첫번째 페이지 링크 |
|
다음 페이지 링크 |
|
마지막 페이지 링크 |
POST
POST
요청을 사용해서 게시물을 작성할 수 있다.
Request headers
Name | Description |
---|---|
|
JSON |
|
Bearer Token |
Request fields
Path | Type | Description |
---|---|---|
|
|
게시물 내용 |
HTTP request
POST /v1/posts HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc
Accept: application/hal+json
Content-Length: 35
Host: localhost:8080
{
"content" : "Test Content1"
}
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
|
Content-Type |
Response fields
Path | Type | Description |
---|---|---|
|
|
게시물 Id |
|
|
게시물의 내용 |
|
|
게시물 좋아요 수 |
|
|
게시물 작성자 이메일 |
|
|
게시물 작성자 닉네임 |
|
|
게시물의 마지막 수정일 |
|
|
게시물 댓글 수 |
|
|
Self link |
|
|
첫번째 페이지 링크 |
|
|
문서 링크 |
Example response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 481
{
"id" : 15,
"content" : "Test Content1",
"likes" : 0,
"userEmail" : "px2007@naver.com",
"userNickName" : "피엑스맛나",
"modifyDate" : "21/03/16 16:30",
"comments" : 0,
"_links" : {
"self" : {
"href" : "http://localhost:8080/v1/posts/15"
},
"comments" : {
"href" : "http://localhost:8080/v1/posts/15/comments"
},
"documentation_url" : {
"href" : "http://localhost:8080/docs/index.html#_post"
}
}
}
Links
Relation | Description |
---|---|
|
Self link |
|
댓글 목록 조회 링크 |
|
문서 링크 |
Update
PUT
요청을 사용해서 작성한 게시물을 수정할 수 있다.
Request headers
Name | Description |
---|---|
|
JSON |
|
Bearer Token |
Path parameters
Parameter | Description |
---|---|
|
수정할 게시물 Id |
Request fields
Path | Type | Description |
---|---|---|
|
|
게시물 내용 |
HTTP request
PUT /v1/posts/25 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc
Accept: application/hal+json
Content-Length: 41
Host: localhost:8080
{
"content" : "change post content"
}
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
|
Content-Type |
Response fields
Path | Type | Description |
---|---|---|
|
|
게시물 Id |
|
|
게시물의 내용 |
|
|
게시물 좋아요 수 |
|
|
게시물 작성자 이메일 |
|
|
게시물 작성자 닉네임 |
|
|
게시물의 마지막 수정일 |
|
|
게시물 댓글 수 |
|
|
Self link |
|
|
첫번째 페이지 링크 |
|
|
문서 링크 |
Example response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 491
{
"id" : 25,
"content" : "change post content",
"likes" : 0,
"userEmail" : "px2007@naver.com",
"userNickName" : "피엑스맛나",
"modifyDate" : "21/03/16 16:30",
"comments" : 0,
"_links" : {
"self" : {
"href" : "http://localhost:8080/v1/posts/25"
},
"comments" : {
"href" : "http://localhost:8080/v1/posts/25/comments"
},
"documentation_url" : {
"href" : "http://localhost:8080/docs/index.html#_update_2"
}
}
}
Links
Relation | Description |
---|---|
|
Self link |
|
댓글 목록 조회 링크 |
|
문서 링크 |
Delete
DELETE
요청을 사용해서 작성한 게시물을 삭제할 수 있다.
Request headers
Name | Description |
---|---|
|
JSON |
|
Bearer Token |
HTTP request
DELETE /v1/posts/26 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc
Accept: application/hal+json
Host: localhost:8080
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
Example 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: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Comment
유저가 작성한 댓글을 말한다.
GET
GET
요청을 사용해서 게시물의 작성된 댓글을 조회할 수 있다.
Request headers
Name | Description |
---|---|
|
JSON |
Path parameters
Parameter | Description |
---|---|
|
게시물 Id |
HTTP request
GET /v1/posts/3/comments HTTP/1.1
Content-Type: application/json;charset=UTF-8
Accept: application/hal+json
Host: localhost:8080
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
|
Content-Type |
Response fields
Path | Type | Description |
---|---|---|
|
|
댓글 Id |
|
|
게시물 Id |
|
|
댓글의 내용 |
|
|
댓글 작성자 이메일 |
|
|
댓글 작성자 닉네임 |
|
|
댓글의 마지막 수정일 |
|
|
댓글 작성자 여부 |
|
|
댓글 Self link |
|
|
문서 링크 |
Example response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 897
{
"_embedded" : {
"commentModels" : [ {
"id" : 3,
"postId" : 3,
"content" : "test Comment1",
"userEmail" : "px2007@naver.com",
"userNickName" : "피엑스맛나",
"modifyDate" : "21/03/16 16:30",
"isWriter" : false,
"_links" : {
"self" : {
"href" : "http://localhost:8080/v1/posts/3/comments/3"
}
}
}, {
"id" : 4,
"postId" : 3,
"content" : "test Comment2",
"userEmail" : "px2007@naver.com",
"userNickName" : "피엑스맛나",
"modifyDate" : "21/03/16 16:30",
"isWriter" : false,
"_links" : {
"self" : {
"href" : "http://localhost:8080/v1/posts/3/comments/4"
}
}
} ]
},
"_links" : {
"documentation_url" : {
"href" : "http://localhost:8080/docs/index.html#_get_3"
}
}
}
Links
Relation | Description |
---|---|
|
문서 링크 |
POST
POST
요청을 사용해서 댓글을 작성할 수 있다.
Request headers
Name | Description |
---|---|
|
JSON |
|
Bearer Token |
Path parameters
Parameter | Description |
---|---|
|
게시물 Id |
Request fields
Path | Type | Description |
---|---|---|
|
|
댓글 내용 |
HTTP request
POST /v1/posts/1/comments HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc
Accept: application/hal+json
Content-Length: 34
Host: localhost:8080
{
"content" : "test Comment"
}
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
|
Content-Type |
Response fields
Path | Type | Description |
---|---|---|
|
|
댓글 Id |
|
|
게시물 Id |
|
|
댓글의 내용 |
|
|
댓글 작성자 이메일 |
|
|
댓글 작성자 닉네임 |
|
|
댓글의 마지막 수정일 |
|
|
댓글 작성자 여부 |
|
|
댓글 Self link |
|
|
문서 링크 |
Example response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 406
{
"id" : 1,
"postId" : 1,
"content" : "test Comment",
"userEmail" : "px2007@naver.com",
"userNickName" : "피엑스맛나",
"modifyDate" : "21/03/16 16:30",
"isWriter" : true,
"_links" : {
"self" : {
"href" : "http://localhost:8080/v1/posts/1/comments/1"
},
"documentation_url" : {
"href" : "http://localhost:8080/docs/index.html#_post_2"
}
}
}
Links
Relation | Description |
---|---|
|
Self link |
|
문서 링크 |
Update
PUT
요청을 사용해서 작성한 게시물을 수정할 수 있다.
Request headers
Name | Description |
---|---|
|
JSON |
|
Bearer Token |
Path parameters
Parameter | Description |
---|---|
|
게시물 Id |
|
댓글 Id |
Request fields
Path | Type | Description |
---|---|---|
|
|
댓글 내용 |
HTTP request
PUT /v1/posts/2/comments/2 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc
Accept: application/hal+json
Content-Length: 36
Host: localhost:8080
{
"content" : "update comment"
}
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
|
Content-Type |
Response fields
Path | Type | Description |
---|---|---|
|
|
댓글 Id |
|
|
게시물 Id |
|
|
댓글의 내용 |
|
|
댓글 작성자 이메일 |
|
|
댓글 작성자 닉네임 |
|
|
댓글의 마지막 수정일 |
|
|
댓글 작성자 여부 |
|
|
댓글 Self link |
|
|
문서 링크 |
Example response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 410
{
"id" : 2,
"postId" : 2,
"content" : "update comment",
"userEmail" : "px2007@naver.com",
"userNickName" : "피엑스맛나",
"modifyDate" : "21/03/16 16:30",
"isWriter" : true,
"_links" : {
"self" : {
"href" : "http://localhost:8080/v1/posts/2/comments/2"
},
"documentation_url" : {
"href" : "http://localhost:8080/docs/index.html#_update_3"
}
}
}
Links
Relation | Description |
---|---|
|
Self link |
|
문서 링크 |
Delete
DELETE
요청을 사용해서 작성한 게시물을 삭제할 수 있다.
Request headers
Name | Description |
---|---|
|
JSON |
|
Bearer Token |
HTTP request
DELETE /v1/posts/4/comments/5 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc
Accept: application/hal+json
Host: localhost:8080
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
Example 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: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
PostLike
유저가 작성한 게시물의 좋아요 상태를 말한다.
GET
GET
요청을 사용해서 특정 게시물의 좋아요 여부를 반환한다.
Request headers
Name | Description |
---|---|
|
JSON |
|
Bearer Token |
Path parameters
Parameter | Description |
---|---|
|
게시물 Id |
HTTP request
GET /v1/like/28 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc
Accept: application/hal+json
Host: localhost:8080
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
|
Content-Type |
Response fields
Path | Type | Description |
---|---|---|
|
|
게시물 좋아요 여부 |
|
|
Self link |
|
|
문서 링크 |
Example response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 220
{
"_links" : {
"self" : {
"href" : "http://localhost:8080/v1/like/28"
},
"documentation_url" : {
"href" : "http://localhost:8080/docs/index.html#_get_4"
}
},
"isLike" : false
}
Links
Relation | Description |
---|---|
|
Self link |
|
문서 링크 |
POST
POST
요청을 사용해서 게시물의 좋아요를 한다.
Request headers
Name | Description |
---|---|
|
JSON |
|
Bearer Token |
Path parameters
Parameter | Description |
---|---|
|
게시물 Id |
HTTP request
POST /v1/like/27 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc
Accept: application/hal+json
Host: localhost:8080
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
Example 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: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Delete
DELETE
요청을 사용해서 게시물 좋아요를 취소한다.
Request headers
Name | Description |
---|---|
|
JSON |
|
Bearer Token |
Path parameters
Parameter | Description |
---|---|
|
게시물 Id |
HTTP request
DELETE /v1/like/29 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc
Accept: application/hal+json
Host: localhost:8080
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
Example 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: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Participant
소개팅에 참여한 유저를 말한다.
Apply
POST
요청을 사용해서 현재 회차의 소개팅에 참여할 수 있다.
Request headers
Name | Description |
---|---|
|
JSON |
|
Bearer Token |
HTTP request
POST /v1/matching/apply HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc
Accept: application/hal+json
Host: localhost:8080
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
Example 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: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Apply-Overlap
만약 회원이 이미 소개팅에 참여하였으면, 다음과 같은 메시지를 얻는다.
Example response
HTTP/1.1 500 Internal Server Error
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 243
{
"resultCode" : 14,
"message" : "이미 참가하셨습니다",
"details" : "uri=/v1/matching/apply",
"_links" : {
"documentation_url" : {
"href" : "http://localhost:8080/docs/index.html#overview-errors"
}
}
}
Result
GET
요청을 사용해서 마지막 소개팅 결과를 얻을 수 있다.
Request headers
Name | Description |
---|---|
|
JSON |
|
Bearer Token |
HTTP request
GET /v1/matching/result HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTU4ODM0MzEsInVzZXJfbmFtZSI6InB4MjAwN0BuYXZlci5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiNDYzYWU4YTktOGU4My00ZDBmLWExNWYtMmRiNDRkOGNjOGFiIiwiY2xpZW50X2lkIjoibXlBcHAiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXX0.CZLmOc-M3pPkvvANCP5rcc3t--ZoRsy8KbK9_1VPIRc
Accept: application/hal+json
Host: localhost:8080
Response headers
Name | Description |
---|---|
|
Cache-Control |
|
Pragma |
Example response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 158
{
"isMatching" : false,
"otherKakaoId" : null,
"_links" : {
"self" : {
"href" : "http://localhost:8080/v1/matching/result"
}
}
}
Result-Exception
만약 현재 날짜가 소개팅 매칭 날짜보다 이전이라면 다음과 같은 에러 메시지를 얻는다.
Example response
HTTP/1.1 500 Internal Server Error
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 244
{
"resultCode" : 12,
"message" : "조회기간이 아닙니다",
"details" : "uri=/v1/matching/result",
"_links" : {
"documentation_url" : {
"href" : "http://localhost:8080/docs/index.html#overview-errors"
}
}
}