Appearance
board
게시판 목록
GET
/boards
공개(ACTIVE)된 게시판만. 포털 메뉴가 이걸로 그려진다.
Cache-Control: public, max-age=60 이 붙는다 — 인자도 로그인도 없어 누구에게나 같은 응답이고, 포털이 화면마다 부르기 때문이다. 게시판을 새로 만들면 최대 1분 뒤에 메뉴에 나타난다.
Request
GET
/boardsResponse
200
PublicBoard
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
name | string | required | 주소에 쓰는 이름 | |
title | string | required | 화면에 보이는 이름 | |
description | object | required | ||
writeRole | string | required | ADMIN, MEMBER | 글을 쓸 수 있는 사람 |
commentEnabled | boolean | required | 댓글을 받는 게시판인가 | |
likeEnabled | boolean | required | 좋아요를 받는 게시판인가 |
게시글 목록
GET
/boards/{name}/posts
공개된 글만. 고정 글이 먼저, 그다음 최신순.
인자 없이 부른 첫 페이지에만 Cache-Control: public, max-age=60 이 붙는다 — 게시판을 열면 누구나 보게 되는 한 장이라, 링크가 퍼질 때의 순간 트래픽을 CDN 이 받아 낸다. 페이지를 넘기거나 크기를 바꾸면 no-store 다. 새 글은 최대 1분 뒤에 목록에 나타난다.
Request
GET
/boards/{name}/postsPath Parameters
| Name | Type | Required | Constraints | Description |
|---|---|---|---|---|
name | string | required |
Query Parameters
| Name | Type | Required | Constraints | Description |
|---|---|---|---|---|
page | number | optional | default 1 | 페이지 번호(1부터) |
size | number | optional | max 50 · default 20 | 페이지 크기 |
Response
200
PageResponse
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | PublicPostSummary[] | required | ||
page | number | required | 현재 페이지 번호 | |
size | number | required | 페이지 크기 | |
totalCount | number | required | 전체 항목 수 | |
totalPages | number | required | 전체 페이지 수 |
PublicPostSummary
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | number | required | ||
title | string | required | ||
summary | object | required | ||
author | PublicAuthor | required | ||
↳type | number | required | 1, 2 | |
↳id | number | required | 회원 글이면 회원번호, 운영자 글이면 0 | |
↳name | string | required | ||
pinned | boolean | required | ||
secret | boolean | required | 비공개 글인가 | |
commentEnabled | boolean | required | 게시판·글 설정을 합친 결과 | |
likeEnabled | boolean | required | 게시판·글 설정을 합친 결과 | |
publishedAt | object | required | ||
viewCount | number | required | ||
commentCount | number | required |
게시글 하나
GET
/boards/{name}/posts/{id}
비공개 글의 본문은 쓴 사람에게만 나간다 — 나머지에게는 content 가 빠진다.
공개 글에만 Cache-Control: public, max-age=60 이 붙는다 — 오래 태우려는 것이 아니라 링크가 퍼질 때의 순간 트래픽을 CDN 이 받아 내기 위한 1분이다. 그동안의 조회는 서버에 닿지 않아 조회수도 그만큼 덜 는다. 비공개 글은 no-store 라 공유 캐시에 남지 않는다.
Request
GET
/boards/{name}/posts/{id}Path Parameters
| Name | Type | Required | Constraints | Description |
|---|---|---|---|---|
name | string | required | ||
id | number | required |
Response
200
PublicPostDetail
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | number | required | ||
title | string | required | ||
summary | object | required | ||
author | PublicAuthor | required | ||
pinned | boolean | required | ||
secret | boolean | required | 비공개 글인가 | |
commentEnabled | boolean | required | 게시판·글 설정을 합친 결과 | |
likeEnabled | boolean | required | 게시판·글 설정을 합친 결과 | |
publishedAt | object | required | ||
viewCount | number | required | ||
commentCount | number | required | ||
content | object | optional | 본문(마크다운) | |
comments | PublicComment[] | required |
PublicAuthor
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
type | number | required | 1, 2 | |
id | number | required | 회원 글이면 회원번호, 운영자 글이면 0 | |
name | string | required |
PublicComment
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | number | required | ||
parentId | object | required | 답글이면 부모 댓글 번호 | |
author | PublicAuthor | required | ||
↳type | number | required | 1, 2 | |
↳id | number | required | 회원 글이면 회원번호, 운영자 글이면 0 | |
↳name | string | required | ||
content | object | optional | ||
secret | boolean | required | ||
createdAt | string | required |