API 목록

게시글 생성

요청

Request

POST /posts HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0NjYiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQ1LCJleHAiOjE3MTExMjI3NDV9.uQENjmvNLwsEHJ-Ui-lLKmfkk47BTHihFBOBYAJq-t0

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=request
Content-Type: application/json

{"title":"게시글 제목","content":"게시글 내용","allowComment":true,"isNotice":false,"isSecret":false,"isTemp":false,"password":"게시글 비밀번호","categoryId":104}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=thumbnail; filename=testImage_1x1.png
Content-Type: image/png

�PNG


IHDR%�V�PLTE�z=�tRNS@��f
IDAT�c`�!�3IEND�B`�
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=files; filename=testImage_1x1.png
Content-Type: image/png

�PNG


IHDR%�V�PLTE�z=�tRNS@��f
IDAT�c`�!�3IEND�B`�
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Request Fields

Path Type Description

title

String

게시글 제목을 입력해주세요. (최대 가능 길이 : 50)

content

String

게시글 내용을 입력해주세요. (임시 저장글이 아닐 경우 필수입니다.)

allowComment

Boolean

댓글 허용 여부

isNotice

Boolean

공지글 여부

isSecret

Boolean

비밀글 여부

isTemp

Boolean

임시 저장글 여부

password

String

게시글 비밀번호를 입력해주세요. (최대 가능 길이 : 16, 비밀글일 경우 필수값입니다.)

categoryId

Number

게시글 카테고리를 입력해주세요.

Request Parts

파트명 필수값 설명

request

true

게시글 정보

thumbnail

게시글의 썸네일

files

게시글의 첨부 파일

응답

Response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Location: /posts/1
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

Response Headers

Name Description

Location

생성한 게시글을 불러오는 URI 입니다.

게시글 조회

요청

Request

GET /posts/103 HTTP/1.1
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0NDciLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQ1LCJleHAiOjE3MTExMjI3NDV9.G8aEVbw_7IHPkCGXk6Q3RvyTKukhGLbmvvfMaOcRFyM

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Path Parameters

Table 1. /posts/{postId}
Parameter Description

postId

조회하고자 하는 게시글의 ID

Query Parameters

파라미터명 필수값 양식 설명

password

조회하고자 하는 게시글의 비밀번호. 단, 작성자가 본인인 경우 필수가 아니며 비밀글이라면 필수값입니다.

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
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: 768

{
  "categoryId" : 104,
  "categoryName" : "자유게시판",
  "title" : "게시글 제목",
  "writerId" : 447,
  "writerName" : "etkSkczFwl",
  "writerThumbnailPath" : null,
  "visitCount" : 1,
  "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/dd7ee94b-a4fb-4039-a8d0-5f677053cedb.jpeg",
  "content" : "게시글 내용",
  "likeCount" : 0,
  "dislikeCount" : 0,
  "fileCount" : 1,
  "allowComment" : true,
  "isNotice" : false,
  "isSecret" : false,
  "isTemp" : false,
  "isLike" : false,
  "isDislike" : false,
  "isRead" : null,
  "registerTime" : "2024-03-22",
  "updateTime" : "2024-03-22 14:52:25",
  "previousPost" : {
    "postId" : 102,
    "title" : "게시글 제목"
  },
  "nextPost" : {
    "postId" : 104,
    "title" : "게시글 제목"
  }
}

Response Fields

Path Type Description

categoryId

Number

게시글 카테고리의 ID

categoryName

String

게시글 카테고리의 이름

title

String

게시글의 타이틀

writerId

Number

게시글 작성자의 ID(익명 게시판일 경우 "1")

writerName

String

게시글 작성자의 이름(익명 게시판일 경우 "익명")

writerThumbnailPath

Null

게시글 작성자의 썸네일 경로(익명 게시판일 경우 null)

registerTime

String

게시글 등록 시간

updateTime

String

게시글 수정 시간

visitCount

Number

게시글 조회수

thumbnailPath

String

게시글 썸네일 주소

content

String

게시글 내용

likeCount

Number

게시글의 좋아요 수

dislikeCount

Number

게시글의 싫어요 수

fileCount

Number

게시글의 파일 수

allowComment

Boolean

댓글 허용 여부

isNotice

Boolean

공지글 여부

isSecret

Boolean

비밀글 여부

isTemp

Boolean

임시 저장글 여부

isLike

Boolean

좋아요 했는지 여부

isDislike

Boolean

싫어요 했는지 여부

isRead

Null

게시글 열람 여부 (시험 게시판에서만 응답)

previousPost.postId

Number

이전 게시글 ID

previousPost.title

String

이전 게시글 제목

nextPost.postId

Number

다음 게시글 ID

nextPost.title

String

다음 게시글 제목

게시글 수정

요청

Request

PUT /posts/96 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 198
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0MzgiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQ1LCJleHAiOjE3MTExMjI3NDV9.12uOpbcbDfeYV_UWRR0C-M-Rt1l3BKsl84AsDtPqYl4

{
  "title" : "게시글 제목",
  "content" : "게시글 내용",
  "allowComment" : true,
  "isNotice" : false,
  "isSecret" : false,
  "isTemp" : false,
  "password" : "게시글 비밀번호"
}

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Path Parameters

Table 2. /posts/{postId}
Parameter Description

postId

수정하고자 하는 게시글의 ID

Request Fields

필드명 타입 필수값 양식 설명

title

String

true

게시글 제목을 입력해주세요. (최대 가능 길이 : 50)

content

String

게시글 내용을 입력해주세요. (임시 저장글이 아닐 경우 필수입니다.)

allowComment

Boolean

true

댓글 허용 여부

isNotice

Boolean

true

공지글 여부

isSecret

Boolean

true

비밀글 여부

isTemp

Boolean

true

임시 저장글 여부

password

String

게시글 비밀번호를 입력해주세요. (최대 가능 길이 : 16, 비밀글일 경우 필수값입니다.)

응답

Response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Location: /posts/96
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

Response Headers

Name Description

Location

수정한 게시글을 불러오는 URI 입니다.

게시글 썸네일 수정

요청

Request

PATCH /posts/98/thumbnail HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0NDEiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQ1LCJleHAiOjE3MTExMjI3NDV9.FgDhLD5BVK0DR8A6psgixokWZOk1oq1Q8WWU00SJvnE

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Path Parameters

Table 3. /posts/{postId}/thumbnail
Parameter Description

postId

썸네일을 수정하고자 하는 게시글의 ID

Request Parts

파트명 필수값 설명

thumbnail

게시글의 썸네일

응답

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: DENY

게시글 썸네일 삭제

자신의 게시글의 썸네일만 삭제할 수 있습니다.

요청

Request

DELETE /posts/81/thumbnail HTTP/1.1
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0MTYiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQ0LCJleHAiOjE3MTExMjI3NDR9.3C3u9m2hS114Xl3evSp6zxX1reELohybJjRNU3MBkUQ

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

응답

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: DENY

게시글 삭제

요청

Request

DELETE /posts/92 HTTP/1.1
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0MzIiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQ1LCJleHAiOjE3MTExMjI3NDV9.V7nxWVEQlsrcI3AF_1IadwFsaHnSSR7sGiDKjUk46U0

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Path Parameters

Table 4. /posts/{postId}
Parameter Description

postId

삭제하고자 하는 게시글의 ID

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
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: 40

{
  "categoryName" : "자유게시판"
}

게시글 좋아요 또는 좋아요 취소

요청

Request

PATCH /posts/88/likes HTTP/1.1
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0MjYiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQ0LCJleHAiOjE3MTExMjI3NDR9.KRAtUf2i4qjfvAJN4ocLpQzLVIbkI4gGzSAgNZxmBb4

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Path Parameters

Table 5. /posts/{postId}/likes
Parameter Description

postId

좋아요 또는 좋아요 취소하고자 하는 게시글의 ID

응답

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: DENY

게시글 싫어요 또는 싫어요 취소

요청

Request

PATCH /posts/86/dislikes HTTP/1.1
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0MjMiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQ0LCJleHAiOjE3MTExMjI3NDR9.qxXidy-OGaAu9VyqBnRysPC3JfQi3P2C7dfBieskzc4

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Path Parameters

Table 6. /posts/{postId}/dislikes
Parameter Description

postId

싫어요 또는 싫어요 취소하고자 하는 게시글의 ID

응답

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: DENY

공지글 목록 조회

요청

Request

GET /posts/notices?categoryId=104 HTTP/1.1
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0MTkiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQ0LCJleHAiOjE3MTExMjI3NDR9.p2KvrFk4R1-sEegfM13X_miTLAhjUVrOIFFhudp98qE

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Query Parameters

파라미터명 필수값 양식 설명

categoryId

true

조회하고자 하는 공지글 목록의 카테고리 ID

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
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: 389

{
  "posts" : [ {
    "id" : 84,
    "title" : "게시글 제목",
    "writerId" : 422,
    "writerName" : "pJcYrLjSoa",
    "writerThumbnailPath" : null,
    "visitCount" : 0,
    "commentCount" : 0,
    "isSecret" : false,
    "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/9652b24a-6de4-4de3-a574-c4443a7ea0cc.jpeg",
    "likeCount" : 0,
    "registerTime" : "2024-03-22"
  } ]
}

Response Fields

Path Type Description

posts[].id

Number

게시글 ID

posts[].title

String

게시글 제목

posts[].writerId

Number

게시글 작성자 ID

posts[].writerName

String

게시글 작성자 실명

posts[].writerThumbnailPath

Null

게시글 작성자 썸네일 주소

posts[].visitCount

Number

게시글 조회수

posts[].commentCount

Number

게시글 댓글 개수

posts[].isSecret

Boolean

게시글 비밀글 여부

posts[].thumbnailPath

String

게시글 썸네일 주소

posts[].likeCount

Number

게시글 좋아요 수

posts[].registerTime

String

게시글 작성 시간

게시글 파일 추가

자신의 게시글에만 파일을 추가할 수 있습니다.

요청

Request

POST /posts/79/files HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0MTMiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQ0LCJleHAiOjE3MTExMjI3NDR9.k-HFYmK3qrtRRakRy0d7VQYuY94NzOS0wHBbQA4ZVkY

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=files; filename=testImage_1x1.png
Content-Type: image/png

�PNG


IHDR%�V�PLTE�z=�tRNS@��f
IDAT�c`�!�3IEND�B`�
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Path Parameters

Table 7. /posts/{postId}/files
Parameter Description

postId

파일을 추가하고자 하는 게시글의 ID

Request Parts

파트명 필수값 설명

files

true

첨부 파일

응답

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: DENY

게시글 파일 삭제

자신의 게시글의 파일만 삭제할 수 있습니다.

요청

Request

DELETE /posts/77/files HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 25
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0MTAiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQ0LCJleHAiOjE3MTExMjI3NDR9.XwH1xMc1-vo1lRrBW_pJyHn3Qv5YjMXHqyBeFCLGmYU

{
  "fileIds" : [ 109 ]
}

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Path Parameters

Table 8. /posts/{postId}/files
Parameter Description

postId

파일을 삭제하고자 하는 게시글의 ID

Request Fields

필드명 타입 필수값 양식 설명

fileIds[]

Array

true

삭제할 파일의 Id 리스트

응답

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: DENY

게시글 목록 조회(검색)

요청

Request

GET /posts?categoryId=104&searchType=&search=&page=0&size=3 HTTP/1.1
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIzOTIiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQ0LCJleHAiOjE3MTExMjI3NDR9.oBjdD7lUEsL1Z1TPVvEXsNt6kTE5_Mllqr3g3DNMby4

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Query Parameters

파라미터명 필수값 양식 설명

categoryId

true

게시글 카테고리 ID

searchType

title: 제목, content: 내용, writer: 작성자, title+content: 제목+내용, null : 전체(검색x)

검색 타입

search

검색할 단어

page

페이지 (default: 0)

size

한 페이지당 불러올 개수 (default: 10)

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
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: 1594

{
  "content" : [ {
    "id" : 61,
    "title" : "게시글 제목",
    "writerId" : 394,
    "writerName" : "IiwQUeBrVM",
    "writerThumbnailPath" : null,
    "visitCount" : null,
    "commentCount" : 0,
    "isSecret" : false,
    "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/cd3bce9d-0d82-4210-a7a2-9064981618e2.jpeg",
    "likeCount" : 0,
    "registerTime" : "2024-03-22"
  }, {
    "id" : 62,
    "title" : "게시글 제목",
    "writerId" : 392,
    "writerName" : "EzbcuyaQDL",
    "writerThumbnailPath" : null,
    "visitCount" : null,
    "commentCount" : 0,
    "isSecret" : false,
    "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/e56f07cd-8e4e-493c-8eee-e845939dea12.jpeg",
    "likeCount" : 0,
    "registerTime" : "2024-03-22"
  }, {
    "id" : 63,
    "title" : "게시글 제목",
    "writerId" : 395,
    "writerName" : "xhAxKWadIt",
    "writerThumbnailPath" : null,
    "visitCount" : null,
    "commentCount" : 0,
    "isSecret" : false,
    "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/897c73c1-49a6-42b3-be58-5a2f5e161cb3.jpeg",
    "likeCount" : 0,
    "registerTime" : "2024-03-22"
  } ],
  "pageable" : {
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "pageNumber" : 0,
    "pageSize" : 3,
    "paged" : true,
    "unpaged" : false
  },
  "last" : false,
  "totalPages" : 2,
  "totalElements" : 5,
  "first" : true,
  "size" : 3,
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 3,
  "empty" : false
}

Response Fields

Path Type Description

content[].id

Number

게시글 ID

content[].title

String

게시글 제목

content[].writerId

Number

게시글 작성자 ID

content[].writerName

String

게시글 작성자 실명

content[].writerThumbnailPath

Null

게시글 작성자 썸네일 주소

content[].visitCount

Null

게시글 조회수

content[].commentCount

Number

게시글 댓글수

content[].isSecret

Boolean

비밀글 여부

content[].thumbnailPath

String

게시글 썸네일 주소

content[].likeCount

Number

게시글 좋아요 수

content[].registerTime

String

게시글 등록 시간

empty

Boolean

가져오는 페이지가 비어 있는 지

first

Boolean

첫 페이지인지

last

Boolean

마지막 페이지인지

number

Number

페이지 number (0부터 시작)

numberOfElements

Number

현재 페이지의 데이터 개수

pageable

Object

페이지에 대한 부가 정보

sort.empty

Boolean

정렬 기준이 비어 있는 지

sort.sorted

Boolean

정렬이 되었는지

sort.unsorted

Boolean

정렬이 되지 않았는지

totalPages

Number

총 페이지 수

totalElements

Number

총 요소 수

size

Number

한 페이지당 데이터 개수

최근 게시글 목록 조회

비회원도 접근 가능한 api 입니다.

요청

Request

GET /posts/recent HTTP/1.1
Host: docs.api.com

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Content-Type: application/json;charset=UTF-8
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: 1732

[ {
  "id" : 66,
  "title" : "게시글 제목",
  "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/74b05ad7-4179-4549-8e8a-08161f475479.jpeg",
  "categoryId" : 104,
  "categoryName" : "자유게시판",
  "writerName" : "OqdvGsNMan",
  "writerThumbnailPath" : null,
  "visitCount" : 0,
  "isSecret" : false,
  "registerTime" : "2024-03-22"
}, {
  "id" : 67,
  "title" : "게시글 제목",
  "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/09e0ff2b-d657-49e5-9d8b-38e949648856.jpeg",
  "categoryId" : 104,
  "categoryName" : "자유게시판",
  "writerName" : "DwdnkLTmsQ",
  "writerThumbnailPath" : null,
  "visitCount" : 0,
  "isSecret" : false,
  "registerTime" : "2024-03-22"
}, {
  "id" : 68,
  "title" : "게시글 제목",
  "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/5f1070af-9a98-4f05-a358-65c7a9ad6637.jpeg",
  "categoryId" : 104,
  "categoryName" : "자유게시판",
  "writerName" : "LmizyrHpva",
  "writerThumbnailPath" : null,
  "visitCount" : 0,
  "isSecret" : false,
  "registerTime" : "2024-03-22"
}, {
  "id" : 69,
  "title" : "게시글 제목",
  "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/f3adddef-d5b1-410b-95e0-b6012b801804.jpeg",
  "categoryId" : 104,
  "categoryName" : "자유게시판",
  "writerName" : "zIMnqltAOS",
  "writerThumbnailPath" : null,
  "visitCount" : 0,
  "isSecret" : false,
  "registerTime" : "2024-03-22"
}, {
  "id" : 70,
  "title" : "게시글 제목",
  "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/5ed3f788-f08a-4371-bd2f-b3a65cc8ad9f.jpeg",
  "categoryId" : 104,
  "categoryName" : "자유게시판",
  "writerName" : "DzTgMZCYZq",
  "writerThumbnailPath" : null,
  "visitCount" : 0,
  "isSecret" : false,
  "registerTime" : "2024-03-22"
} ]

Response Fields

Path Type Description

[].id

Number

게시글 ID

[].title

String

게시글 제목

[].writerName

String

게시글 작성자 실명

[].writerThumbnailPath

Null

게시글 작성자 썸네일 주소

[].categoryId

Number

카테고리 ID

[].categoryName

String

카테고리 이름

[].visitCount

Number

게시글 조회수

[].isSecret

Boolean

비밀글 여부

[].thumbnailPath

String

게시글 썸네일 주소

[].registerTime

String

게시글 등록 시간

트랜드 게시글 목록 조회

비회원도 접근 가능한 api 입니다.

요청

Request

GET /posts/trend HTTP/1.1
Host: docs.api.com

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Content-Type: application/json;charset=UTF-8
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: 1732

[ {
  "id" : 71,
  "title" : "게시글 제목",
  "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/274a1874-9ccb-489d-abfd-cbc382e48b94.jpeg",
  "categoryId" : 104,
  "categoryName" : "자유게시판",
  "writerName" : "dcQtIsoOIs",
  "writerThumbnailPath" : null,
  "visitCount" : 0,
  "isSecret" : false,
  "registerTime" : "2024-03-22"
}, {
  "id" : 72,
  "title" : "게시글 제목",
  "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/e70c4ae1-5ee7-4456-84c5-4a5efab2f48a.jpeg",
  "categoryId" : 104,
  "categoryName" : "자유게시판",
  "writerName" : "PbKlhERkSr",
  "writerThumbnailPath" : null,
  "visitCount" : 0,
  "isSecret" : false,
  "registerTime" : "2024-03-22"
}, {
  "id" : 73,
  "title" : "게시글 제목",
  "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/8b75446a-afde-4d28-9326-a63e20609c79.jpeg",
  "categoryId" : 104,
  "categoryName" : "자유게시판",
  "writerName" : "ACWjubOSwZ",
  "writerThumbnailPath" : null,
  "visitCount" : 0,
  "isSecret" : false,
  "registerTime" : "2024-03-22"
}, {
  "id" : 74,
  "title" : "게시글 제목",
  "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/af7d8768-ab7a-479c-bfe1-119d0da0a7b0.jpeg",
  "categoryId" : 104,
  "categoryName" : "자유게시판",
  "writerName" : "pWHLODSRgF",
  "writerThumbnailPath" : null,
  "visitCount" : 0,
  "isSecret" : false,
  "registerTime" : "2024-03-22"
}, {
  "id" : 75,
  "title" : "게시글 제목",
  "thumbnailPath" : "keeper_files/thumbnail/2024-03-22/bc981b36-df96-4cce-bf47-e5f92975a79b.jpeg",
  "categoryId" : 104,
  "categoryName" : "자유게시판",
  "writerName" : "IURHiycIiP",
  "writerThumbnailPath" : null,
  "visitCount" : 0,
  "isSecret" : false,
  "registerTime" : "2024-03-22"
} ]

Response Fields

Path Type Description

[].id

Number

게시글 ID

[].title

String

게시글 제목

[].writerName

String

게시글 작성자 실명

[].writerThumbnailPath

Null

게시글 작성자 썸네일 주소

[].categoryId

Number

카테고리 ID

[].categoryName

String

카테고리 이름

[].visitCount

Number

게시글 조회수

[].isSecret

Boolean

비밀글 여부

[].thumbnailPath

String

게시글 썸네일 주소

[].registerTime

String

게시글 등록 시간

게시글의 첨부파일 목록 조회

시험게시판 게시글의 첨부파일 목록을 최초 조회 시 포인트가 차감됩니다. 단, 본인의 게시글일 경우 포인트는 차감되지 않습니다.

요청

Request

GET /posts/42/files HTTP/1.1
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIzNzEiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQzLCJleHAiOjE3MTExMjI3NDN9.AoPXMU_k3L2V8uysi2_q7pZTeiDS6WxBwwySdeQemoc

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Path Parameters

Table 9. /posts/{postId}/files
Parameter Description

postId

조회하고자 하는 게시글의 ID

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
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: 224

[ {
  "fileId" : 73,
  "name" : "testImage_1x1.png",
  "path" : "keeper_files/files/2024-03-22/f1e1fb13-eae4-4d17-afa9-fade6888bb01.png",
  "size" : 95,
  "ipAddress" : "127.0.0.1",
  "uploadTime" : "2024-03-22 14:52:24"
} ]

Response Fields

Path Type Description

[].fileId

Number

파일 ID

[].name

String

파일 이름

[].path

String

파일 경로

[].size

Number

파일 크기

[].ipAddress

String

ipAddress

[].uploadTime

String

파일 업로드 시간

회원의 게시글 목록 조회

요청

Request

GET /posts/members/386 HTTP/1.1
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIzODYiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQzLCJleHAiOjE3MTExMjI3NDN9.ID-VXnYlgssc2UtoRxNGWjkdueeCXNAQDkx2AwrUyCY

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Path Parameters

Table 10. /posts/members/{memberId}
Parameter Description

memberId

회원의 ID

Query Parameters

파라미터명 필수값 양식 설명

page

페이지 (default: 0)

size

한 페이지당 불러올 개수 (default: 10)

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
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: 675

{
  "content" : [ {
    "id" : 57,
    "title" : "게시글 제목",
    "categoryId" : 104,
    "categoryName" : "자유게시판",
    "visitCount" : 0,
    "isSecret" : false,
    "registerTime" : "2024-03-22"
  } ],
  "pageable" : {
    "sort" : {
      "empty" : false,
      "sorted" : true,
      "unsorted" : false
    },
    "offset" : 0,
    "pageNumber" : 0,
    "pageSize" : 10,
    "paged" : true,
    "unpaged" : false
  },
  "last" : true,
  "totalPages" : 1,
  "totalElements" : 1,
  "first" : true,
  "size" : 10,
  "number" : 0,
  "sort" : {
    "empty" : false,
    "sorted" : true,
    "unsorted" : false
  },
  "numberOfElements" : 1,
  "empty" : false
}

Response Fields

Path Type Description

content[].id

Number

게시글 ID

content[].title

String

게시글 제목

content[].categoryId

Number

게시글 카테고리 ID

content[].categoryName

String

게시글 카테고리 이름

content[].visitCount

Number

게시글 조회수

content[].isSecret

Boolean

비밀글 여부

content[].registerTime

String

게시글 등록 시간

empty

Boolean

가져오는 페이지가 비어 있는 지

first

Boolean

첫 페이지인지

last

Boolean

마지막 페이지인지

number

Number

페이지 number (0부터 시작)

numberOfElements

Number

현재 페이지의 데이터 개수

pageable

Object

페이지에 대한 부가 정보

sort.empty

Boolean

정렬 기준이 비어 있는 지

sort.sorted

Boolean

정렬이 되었는지

sort.unsorted

Boolean

정렬이 되지 않았는지

totalPages

Number

총 페이지 수

totalElements

Number

총 요소 수

size

Number

한 페이지당 데이터 개수

임시글 목록 조회

요청

Request

GET /posts/temp HTTP/1.1
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIzNzQiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQzLCJleHAiOjE3MTExMjI3NDN9.w5_7AhlYzbuGCSzeymJFWLuccsWVqA5gblqmJ9aWPgQ

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Query Parameters

파라미터명 필수값 양식 설명

page

페이지 (default: 0)

size

한 페이지당 불러올 개수 (default: 10)

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
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: 937

{
  "content" : [ {
    "id" : 48,
    "title" : "게시글 제목",
    "categoryId" : 104,
    "categoryName" : "자유게시판",
    "registerTime" : "2024-03-22"
  }, {
    "id" : 49,
    "title" : "게시글 제목",
    "categoryId" : 104,
    "categoryName" : "자유게시판",
    "registerTime" : "2024-03-22"
  }, {
    "id" : 50,
    "title" : "게시글 제목",
    "categoryId" : 104,
    "categoryName" : "자유게시판",
    "registerTime" : "2024-03-22"
  } ],
  "pageable" : {
    "sort" : {
      "empty" : false,
      "sorted" : true,
      "unsorted" : false
    },
    "offset" : 0,
    "pageNumber" : 0,
    "pageSize" : 10,
    "paged" : true,
    "unpaged" : false
  },
  "last" : true,
  "totalPages" : 1,
  "totalElements" : 3,
  "first" : true,
  "size" : 10,
  "number" : 0,
  "sort" : {
    "empty" : false,
    "sorted" : true,
    "unsorted" : false
  },
  "numberOfElements" : 3,
  "empty" : false
}

Response Fields

Path Type Description

content[].id

Number

게시글 ID

content[].title

String

게시글 제목

content[].categoryId

Number

게시글 카테고리 ID

content[].categoryName

String

게시글 카테고리 이름

content[].registerTime

String

게시글 등록 시간

empty

Boolean

가져오는 페이지가 비어 있는 지

first

Boolean

첫 페이지인지

last

Boolean

마지막 페이지인지

number

Number

페이지 number (0부터 시작)

numberOfElements

Number

현재 페이지의 데이터 개수

pageable

Object

페이지에 대한 부가 정보

sort.empty

Boolean

정렬 기준이 비어 있는 지

sort.sorted

Boolean

정렬이 되었는지

sort.unsorted

Boolean

정렬이 되지 않았는지

totalPages

Number

총 페이지 수

totalElements

Number

총 요소 수

size

Number

한 페이지당 데이터 개수

게시글 파일 다운로드

게시글에 댓글을 생성한 회원만 해당 게시글의 파일을 다운받을 수 있습니다. 단, 본인이 작성한 게시글이라면 댓글을 작성하지 않아도 됩니다.

요청

Request

GET /posts/38/files/65 HTTP/1.1
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIzNjYiLCJyb2xlcyI6IlJPTEVf7ZqM7JuQIiwiaWF0IjoxNzExMTE5MTQyLCJleHAiOjE3MTExMjI3NDJ9.XBahPmMkwRtwM8cqlvW44_WW8WTcdhXbWg46hRDArMM

Request Cookies

Name Description

accessToken

ACCESS TOKEN (ROLE_회원)

Path Parameters

Table 11. /posts/{postId}/files/{fileId}
Parameter Description

postId

게시글 ID

fileId

파일 ID

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/octet-stream;charset=UTF-8
Content-Disposition: attachment; filename="testImage_1x1.png"
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: 95

�PNG


IHDR%�V�PLTE�z=�tRNS@��f
IDAT�c`�!�3IEND�B`�