Skip to content

댓글 API

Jung edited this page Jun 25, 2022 · 9 revisions

Title: 댓글 API Author: Jung CreatedDate: 2022.06.16

Table of Contents

01. 댓글 생성

익명 게시글일 때

부모 댓글 없을 때 Request

"method": "POST"
"uri": "/api/v1/boards/{boardId}/posts/{postId}/comments"
"body" : {
    "userId" : 1,
    "postId" : 1,
    "parentId" : null,
    "isPostAnonymous" : true,
    "isCommentAnonymous" : true,
    "content" : "test1"
}

부모 댓글 없을때 Response

HTTP/1.1 201
Location: /api/v1/boards/{boardId}/posts/{postId}
Content-Type: application/json

{
  "message" : "댓글 생성 성공",
  "data": {
    "userId": 1,
    "parentId": null,
    "commentId": 1,
    "seq": 1,
    "content": "test1"
  }
}

부모 댓글 있을 때 Request

"method": "POST"
"uri": "/api/v1/board/{id}/posts{id}/comments"
"body": {
    "userId" : 1,
    "postId" : 1,
    "parentId" : 1,
    "isPostAnonymous" : true,
    "isCommentAnonymous" : true,
    "content" : "test1"
}

부모 댓글 있을 때 Response

HTTP/1.1 201
Location: /api/v1/board/{id}/posts/{id}
Content-Type: application/json

{
  "message" : "댓글 생성 성공",
  "data": {
    "userId": 1,
    "parentId": 1,
    "commentId": 2,
    "seq": 2,
    "content": "test1"
  }
}

부모 댓글 없을 때 그리고 익명 아닐때 Request

"method": "POST"
"uri": "/api/v1/board/{id}/posts/{id}/comments"
"body" : {
    "userId" : 1,
    "postId" : 1,
    "parentId" : null,
    "isPostAnonymous" : true,
    "isCommentAnonymous" : false,
    "content" : "test1"
}

부모 댓글 없을때 그리고 익명 아닐때 Response

HTTP/1.1 201
Location: /api/v1/board/{id}/posts/{id}
Content-Type: application/json

{
  "message" : "댓글 생성 성공",
  "data": {
    "userId": 1,
    "parentId": null,
    "commentId": 1,
    "seq": null,
    "content": "test1"
  }
}

02. 댓글 조회

댓글 조회 Request

댓글 조회하는 요청 케이스를 페이징으로만 요청하도록 처리
즉 요청할 때, 쿼리 파라미터로 넣어서 받아오지 않고,
서버 내부에서 결정한 규칙으로 설정

  • page size : 20개
  • 정렬 기준 : createdAt (추가하지 않음.)
"method": "GET"
"uri": "/api/v1/board/{id}/posts/{id}/comments"

댓글 조회 Response

HTTP/1.1 200
Content-Type: application/json

{
  "message" : "댓글 조회 성공",
  "data": {
    "content":[
      {
        "userId": 1,
        "parentId": null,
        "commentId": 1,
        "seq": 1,
        "content": "test1",
        "like": 3,
        "children": [
          {
            "userId": 2,
            "parentId": 1,
            "commentId": 2,
            "seq": null,
            "content": "test2",
            "like": 0,
            "children":[

            ]
          }
        ]
      },
      {
        "userId": 3,
        "parentId": null,
        "commentId": 3,
        "seq": 2,
        "content": "test3",
        "like": 1,
        "children": [
        ]
      }

    ],
    "pageable":{
      "sort": {
        "empty": false,
        "sorted": true,
        "unsorted": false
      },
      "offset": 0,
      "pageNumber": 0,
      "pageSize": 20,
      "paged": true,
      "unpaged" : false
    },
    "totalpages": 1,
    "totalElements": 3,
    "last": true,
    "numberOfElements": 3,
    "first": true,
    "size": 20,
    "number": 0,
    "sort":{
      "sorted": true,
      "unsorted": false,
      "empty": true
    },
    "empty": false
  }
}

03. 댓글 삭제

댓글 삭제 Request

"method": "DELETE"
"uri": "/api/v1/comments/{commentId}"

댓글 삭제 Response

HTTP/1.1 200
"message" : "댓글 삭제 성공",
  "data": {

  }

04. 댓글 좋아요 생성

댓글 좋아요 생성 Request

"method": "POST"
"uri": "/api/v1/board/{id}/posts/{id}/comments"
"body": {
  "commentId" : 1
}

댓글 좋아요 생성 Resposne

HTTP/1.1 201
"message" : "댓글 좋아요 생성 성공",
  "data": {

  }

05. 댓글 좋아요 삭제

댓글 좋아요 삭제 Request

"method": "DELETE"
"uri": "/api/v1/board/{id}/posts/{id}/comments"
"body": {
  "commentId" : 1
}

댓글 좋아요 삭제 Resposne

HTTP/1.1 200
"message" : "좋아요 삭제 성공",
  "data": {

  }

까먹지 않게 생각나는 대로 비즈니스 룰

  • Post가 지워지면, 댓글이 모두 삭제된다.
    • Post에 있는 부모 댓글 + 자식 댓글
  • 부모댓글이 지워진다고 해서, 자식댓글이 사라지는 것은 아니다.
  • 댓글이 지워지면 댓글의 좋아요도 같이 사라진다.