Skip to content

Arios67/freeBoard_service

Repository files navigation

자유 게시판

요구 사항

1. 제목과 본문으로 구성된 게시글 생성

  • 제목과 본문은 각각 20, 200자이며 이모지 포함 가능
  • 게시글 생성 시 비밀번호를 설정하여, 추후 비밀번호를 입력해 게시글 수정 및 삭제 가능

2. 한 페이지 내에서 모든 게시글을 최신 글 순으로 조회

  • 게시글 개수가 많을 때, 무한 스크롤 방식으로 20개씩 추가 로드

구현 내용

1. 게시글 생성

Request body example :

{
  "title": "제목",
  "content": "본문",
  "password": "abcdef1"
}

201 Response example :

{
  "id": "uuid",
  "title": "제목",
  "content": "본문",
  "createAt": "2022-09-07T15:18:26.248Z"
}
  • 제목과 본문의 길이, 비밀번호 형식(6자 이상, 숫자 포함)을 검증 한 뒤 문제가 없다면 생성된 Board 객체를 password만 제외하고 반환합니다.
  • 입력이 제목, 본문, 비밀번호 형식과 다르다면 형식을 안내하는 에러메세지와 함께 400 상태코드를 반환합니다.
  • 비밀번호는 해싱을 거쳐 DB에 저장됩니다.

2. 게시글 목록 조회

200 Response example :

[
  {
    "id": "71b5688e-086a-4a05-9710-011674a5ecd7",
    "title": "9",
    "content": "string",
    "createAt": "2022-09-07T15:18:26.248Z"
  },
  {
    "id": "4b05b56e-d5bf-436e-a7ea-38813c7d4d4f",
    "title": "8",
    "content": "string",
    "createAt": "2022-09-07T15:17:01.902Z"
  },
  .
  .
  .
]
  • createAt을 timestamp로 사용한 커서 기반 페이지네이션 기능을 사용하며, 게시글들은 최신 글 순으로 정렬되어 나타납니다.
  • Query string을 통해 client가 전달받은 Board 배열 마지막 element의 'createAt'값을 입력 받습니다. 요청 받은 게시글 다음 순서의 글부터 20개의 게시글을 반환합니다.
  • 입력 값이 없다면 가장 최신 게시글 20개를 반환합니다.

3. 게시글 수정

Request body example :

{
  "title": "제목",
  "content": "본문",
  "password": "abcdef1"
}

200 Response example :

{
  "id": "uuid",
  "title": "제목",
  "content": "본문",
  "createAt": "2022-09-07T15:18:26.248Z"
}
  • Path parameter를 통해 수정할 게시글의 id를 전달 받은 뒤 올바른 비밀번호가 맞는지 검증합니다.
  • 비밀번호가 맞다면 사용자가 입력한 변경 값으로 대체하여 저장합니다.
  • 비밀번호가 틀렸다면 401 코드를 반환합니다.
  • 존재하지 않는 게시글 id에 대한 요청에는 204 코드가 반환됩니다.

4. 게시글 삭제

Request body example :

{
  "password": "abcdef1"
}

200 Response example :

게시글 삭제
  • Path parameter를 통해 삭제할 게시글의 id를 전달 받은 뒤 올바른 비밀번호가 맞는지 검증합니다.
  • 비밀번호가 맞다면 해당 게시글을 물리적으로 삭제 시킵니다.
  • 비밀번호가 틀렸다면 401 코드를 반환합니다.
  • 존재하지 않는 게시글 id에 대한 요청에는 204 코드가 반환됩니다.

About

자유게시판 rest Api 구현

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published