1. 강의 관리

1.1. 모든 강의 조회 (GET /courses)

1.1.1. 성공

HTTP request
GET /courses HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 412

{
  "courses" : [ {
    "course_id" : 0,
    "course_category" : "Zhuanye",
    "course_credit" : 5.0,
    "course_name" : "Gaoshu0",
    "is_youguan" : 0,
    "kaike_yuanxi" : "Xinke",
    "review_count" : 0
  }, {
    "course_id" : 1,
    "course_category" : "Zhuanye",
    "course_credit" : 5.0,
    "course_name" : "Gaoshu1",
    "is_youguan" : 0,
    "kaike_yuanxi" : "Xinke",
    "review_count" : 0
  } ]
}

1.2. 강의 추가하기 (POST /courses)

1.2.1. 성공

HTTP request
POST /courses HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 146
Host: localhost:8080

{
  "course_name" : "테스트 강의",
  "course_credit" : 5.0,
  "course_category" : "전공",
  "kaike_yuanxi" : "씬커",
  "is_youguan" : 0
}
HTTP response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0

1.3. 특정 강의 이름 받아오기 (GET /courses/{id}/name)

1.3.1. 성공

HTTP request
GET /courses/1/name HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 40

{
  "course_name" : "테스트 강의"
}

2. 리뷰 관리

2.1. 특정 강의의 리뷰 보기 (GET /courses/{id}/reviews)

2.1.1. 성공

HTTP request
GET /courses/1/reviews HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 706

{
  "reviews" : [ {
    "review_id" : 1,
    "course_id" : 1,
    "review_content" : "Test Review 1",
    "review_title" : "Title1",
    "instructor_name" : "Jiaoshou",
    "taken_semyr" : "22-23",
    "grade" : "60",
    "like_count" : 0,
    "review_time" : "2024-04-29T07:26:56.773816088",
    "liked" : false,
    "updated" : false,
    "mine" : false
  }, {
    "review_id" : 2,
    "course_id" : 1,
    "review_content" : "Test Review 2",
    "review_title" : "Title2",
    "instructor_name" : "Jiaoshou",
    "taken_semyr" : "22-23",
    "grade" : "60",
    "like_count" : 0,
    "review_time" : "2024-04-29T07:26:56.773850482",
    "liked" : false,
    "updated" : false,
    "mine" : false
  } ]
}

2.1.2. 실패

최근 작성한 리뷰가 6개월 이상이거나, 없을경우
HTTP request
GET /courses/1/reviews HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 99

{
  "message" : "최근 6개월 동안 리뷰를 작성하지 않았습니다.",
  "errors" : [ ]
}

2.2. 특정 강의의 리뷰 작성하기 (POST /courses/{id}/reviews)

2.2.1. 성공

HTTP request
POST /courses/50/reviews HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 161
Host: localhost:8080

{
  "review_title" : "Test Review from TestCode",
  "instructor_name" : "Jiaoshou",
  "taken_semyr" : "1stSem",
  "review_content" : "Good!",
  "grade" : "100"
}
HTTP response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0

2.3. 리뷰 좋아요 (PUT /reviews/{id}/like)

2.3.1. 성공

HTTP request
PUT /reviews/1/like HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 41

{
  "like_count" : 5,
  "liked" : false
}

2.4. 내 리뷰 보기 (GET /reviews/me)

2.4.1. 성공

HTTP request
GET /reviews/me HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 1388

{
  "reviews" : [ {
    "review_id" : 1,
    "course_id" : 1,
    "review_content" : "Test Review 1",
    "review_title" : "Title1",
    "instructor_name" : "Jiaoshou",
    "taken_semyr" : "22-23",
    "grade" : "60",
    "like_count" : 0,
    "review_time" : "2024-04-29T07:26:56.891496554",
    "liked" : false,
    "updated" : false,
    "mine" : true
  }, {
    "review_id" : 2,
    "course_id" : 1,
    "review_content" : "Test Review 2",
    "review_title" : "Title2",
    "instructor_name" : "Jiaoshou",
    "taken_semyr" : "22-23",
    "grade" : "60",
    "like_count" : 0,
    "review_time" : "2024-04-29T07:26:56.891511402",
    "liked" : false,
    "updated" : false,
    "mine" : true
  }, {
    "review_id" : 3,
    "course_id" : 1,
    "review_content" : "Test Review 3",
    "review_title" : "Title3",
    "instructor_name" : "Jiaoshou",
    "taken_semyr" : "22-23",
    "grade" : "60",
    "like_count" : 0,
    "review_time" : "2024-04-29T07:26:56.891520729",
    "liked" : false,
    "updated" : false,
    "mine" : true
  }, {
    "review_id" : 4,
    "course_id" : 1,
    "review_content" : "Test Review 4",
    "review_title" : "Title4",
    "instructor_name" : "Jiaoshou",
    "taken_semyr" : "22-23",
    "grade" : "60",
    "like_count" : 0,
    "review_time" : "2024-04-29T07:26:56.891528554",
    "liked" : false,
    "updated" : false,
    "mine" : true
  } ]
}

2.5. 리뷰 수정 (PUT /reviews/{id})

2.5.1. 성공

HTTP request
PUT /reviews/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 150
Host: localhost:8080

{
  "review_title" : "new title",
  "instructor_name" : "jiaoshou",
  "taken_semyr" : "18-19",
  "review_content" : "new content",
  "grade" : "100"
}
HTTP response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0

2.5.2. 실패

권한이 없는 경우
HTTP request
PUT /reviews/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 140
Host: localhost:8080

{
  "review_title" : "new title",
  "instructor_name" : null,
  "taken_semyr" : null,
  "review_content" : "new content",
  "grade" : null
}
HTTP response
HTTP/1.1 403 Forbidden
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 61

{
  "message" : "권한이 없습니다.",
  "errors" : [ ]
}

2.6. 리뷰 삭제 (DELETE /reviews/{id})

2.6.1. 성공

HTTP request
DELETE /reviews/8 HTTP/1.1
Authorization: any
Host: localhost:8080
HTTP response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0

2.6.2. 실패

권한이 없는 경우
HTTP request
DELETE /reviews/8 HTTP/1.1
Authorization: any
Host: localhost:8080
HTTP response
HTTP/1.1 403 Forbidden
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 61

{
  "message" : "권한이 없습니다.",
  "errors" : [ ]
}

3. 게시글 관리

3.1. 모든 게시글 보기 (GET /posts)

3.1.1. 성공

HTTP request
GET /posts?page=1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 3267

{
  "posts" : [ {
    "post_id" : 11,
    "post_title" : "title_11",
    "post_category" : "자유",
    "post_comments" : 68,
    "post_likes" : 28,
    "post_time" : "2024-04-29T07:26:56.341971084",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 12,
    "post_title" : "title_12",
    "post_category" : "중고거래",
    "post_comments" : 80,
    "post_likes" : 14,
    "post_time" : "2024-04-29T07:26:56.341989749",
    "liked" : true,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 13,
    "post_title" : "title_13",
    "post_category" : "자유",
    "post_comments" : 34,
    "post_likes" : 95,
    "post_time" : "2024-04-29T07:26:56.342001831",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 14,
    "post_title" : "title_14",
    "post_category" : "질문",
    "post_comments" : 43,
    "post_likes" : 35,
    "post_time" : "2024-04-29T07:26:56.342012681",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 15,
    "post_title" : null,
    "post_category" : "중고거래",
    "post_comments" : 11,
    "post_likes" : 56,
    "post_time" : "2024-04-29T07:26:56.342020957",
    "liked" : false,
    "updated" : false,
    "reported" : true,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 16,
    "post_title" : "title_16",
    "post_category" : "자유",
    "post_comments" : 56,
    "post_likes" : 75,
    "post_time" : "2024-04-29T07:26:56.342031306",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 17,
    "post_title" : "title_17",
    "post_category" : "자유",
    "post_comments" : 78,
    "post_likes" : 39,
    "post_time" : "2024-04-29T07:26:56.342040884",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 18,
    "post_title" : "title_18",
    "post_category" : "중고거래",
    "post_comments" : 3,
    "post_likes" : 68,
    "post_time" : "2024-04-29T07:26:56.342052255",
    "liked" : true,
    "updated" : true,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 19,
    "post_title" : "title_19",
    "post_category" : "자유",
    "post_comments" : 96,
    "post_likes" : 55,
    "post_time" : "2024-04-29T07:26:56.342063686",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 20,
    "post_title" : null,
    "post_category" : "구인",
    "post_comments" : 76,
    "post_likes" : 57,
    "post_time" : "2024-04-29T07:26:56.342077372",
    "liked" : false,
    "updated" : false,
    "reported" : true,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  } ],
  "totalPageCount" : 4,
  "totalPostCount" : 39
}

3.2. 특정 카테고리 게시글 보기 (GET /posts?page=1&category=free)

유효한 category 값: free(자유), question(질문), trade(중고거래), offer(구인), notice(공지)

3.2.1. 성공

HTTP request
GET /posts?page=2&category=free HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 3261

{
  "posts" : [ {
    "post_id" : 21,
    "post_title" : "title_21",
    "post_category" : "자유",
    "post_comments" : 34,
    "post_likes" : 13,
    "post_time" : "2024-04-29T07:26:56.248540184",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 22,
    "post_title" : "title_22",
    "post_category" : "자유",
    "post_comments" : 32,
    "post_likes" : 39,
    "post_time" : "2024-04-29T07:26:56.248574398",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 23,
    "post_title" : "title_23",
    "post_category" : "자유",
    "post_comments" : 1,
    "post_likes" : 42,
    "post_time" : "2024-04-29T07:26:56.248587483",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 24,
    "post_title" : "title_24",
    "post_category" : "자유",
    "post_comments" : 83,
    "post_likes" : 80,
    "post_time" : "2024-04-29T07:26:56.248600096",
    "liked" : true,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 25,
    "post_title" : "title_25",
    "post_category" : "자유",
    "post_comments" : 9,
    "post_likes" : 93,
    "post_time" : "2024-04-29T07:26:56.248611688",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 26,
    "post_title" : "title_26",
    "post_category" : "자유",
    "post_comments" : 78,
    "post_likes" : 97,
    "post_time" : "2024-04-29T07:26:56.248622408",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 27,
    "post_title" : "title_27",
    "post_category" : "자유",
    "post_comments" : 12,
    "post_likes" : 35,
    "post_time" : "2024-04-29T07:26:56.248632607",
    "liked" : false,
    "updated" : true,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 28,
    "post_title" : "title_28",
    "post_category" : "자유",
    "post_comments" : 40,
    "post_likes" : 65,
    "post_time" : "2024-04-29T07:26:56.248643336",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 29,
    "post_title" : "title_29",
    "post_category" : "자유",
    "post_comments" : 57,
    "post_likes" : 20,
    "post_time" : "2024-04-29T07:26:56.248653014",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 30,
    "post_title" : "title_30",
    "post_category" : "자유",
    "post_comments" : 95,
    "post_likes" : 2,
    "post_time" : "2024-04-29T07:26:56.248662382",
    "liked" : true,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  } ],
  "totalPageCount" : 4,
  "totalPostCount" : 39
}

3.3. 특정 게시글 보기 (GET /posts/{id})

3.3.1. 성공

HTTP request
GET /posts/4 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 315

{
  "post_id" : 1,
  "post_title" : "title_1",
  "post_content" : null,
  "post_category" : "자유",
  "member_id" : 1,
  "post_comments" : 40,
  "post_likes" : 57,
  "post_time" : "2024-04-29T07:26:56.147846441",
  "liked" : false,
  "updated" : false,
  "reported" : false,
  "view_count" : 0,
  "mine" : false
}

3.4. 게시글 작성하기 (POST /posts)

3.4.1. 성공

HTTP request
POST /posts HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 88
Host: localhost:8080

{
  "post_title" : "title",
  "post_category" : "자유",
  "post_content" : "content"
}
HTTP response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0

3.4.2. 실패

제목에 내용이 없는 경우
HTTP request
POST /posts HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 85
Host: localhost:8080

{
  "post_title" : null,
  "post_category" : "자유",
  "post_content" : "content"
}
HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 161

{
  "message" : "Invalid input value",
  "errors" : [ {
    "field" : "postTitle",
    "value" : null,
    "reason" : "제목을 비우면 안됩니다."
  } ]
}

3.5. 내 게시글 보기 (GET /posts/me)

3.5.1. 성공

HTTP request
GET /posts/me?page=1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 1671

{
  "posts" : [ {
    "post_id" : 11,
    "post_title" : "title_11",
    "post_category" : "자유",
    "post_comments" : 52,
    "post_likes" : 68,
    "post_time" : "2024-04-29T07:26:56.045588564",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 12,
    "post_title" : "title_12",
    "post_category" : "중고거래",
    "post_comments" : 21,
    "post_likes" : 91,
    "post_time" : "2024-04-29T07:26:56.045641753",
    "liked" : true,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 13,
    "post_title" : "title_13",
    "post_category" : "자유",
    "post_comments" : 44,
    "post_likes" : 64,
    "post_time" : "2024-04-29T07:26:56.045656401",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 14,
    "post_title" : "title_14",
    "post_category" : "질문",
    "post_comments" : 22,
    "post_likes" : 58,
    "post_time" : "2024-04-29T07:26:56.045670066",
    "liked" : false,
    "updated" : false,
    "reported" : false,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  }, {
    "post_id" : 15,
    "post_title" : null,
    "post_category" : "중고거래",
    "post_comments" : 57,
    "post_likes" : 90,
    "post_time" : "2024-04-29T07:26:56.045681718",
    "liked" : false,
    "updated" : false,
    "reported" : true,
    "view_count" : 0,
    "member_id" : 1,
    "mine" : false
  } ],
  "totalPageCount" : 2,
  "totalPostCount" : 14
}

3.6. 게시글 좋아요 (PUT /posts/{id}/like)

3.6.1. 성공

HTTP request
PUT /posts/1/like HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 40

{
  "like_count" : 5,
  "liked" : true
}

3.7. 게시글 수정 (PUT /posts/{id})

3.7.1. 성공

HTTP request
PUT /posts/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 66
Host: localhost:8080

{
  "post_title" : "new title",
  "post_content" : "new content"
}
HTTP response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0

3.7.2. 실패

권한이 없는 경우
HTTP request
PUT /posts/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 66
Host: localhost:8080

{
  "post_title" : "new title",
  "post_content" : "new content"
}
HTTP response
HTTP/1.1 403 Forbidden
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 61

{
  "message" : "권한이 없습니다.",
  "errors" : [ ]
}
제목에 내용이 없는 경우
HTTP request
PUT /posts/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: any
Content-Length: 55
Host: localhost:8080

{
  "post_title" : null,
  "post_content" : "content"
}
HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 151

{
  "message" : "Invalid input value",
  "errors" : [ {
    "field" : "postTitle",
    "value" : null,
    "reason" : "제목이 없습니다."
  } ]
}

3.8. 게시글 삭제 (DELETE /posts/{id})

3.8.1. 성공

HTTP request
DELETE /posts/7 HTTP/1.1
Authorization: any
Host: localhost:8080
HTTP response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0

3.8.2. 실패

권한이 없는 경우
HTTP request
DELETE /posts/7 HTTP/1.1
Authorization: any
Host: localhost:8080
HTTP response
HTTP/1.1 403 Forbidden
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 61

{
  "message" : "권한이 없습니다.",
  "errors" : [ ]
}

4. 댓글 관리

4.1. 특정 게시글의 댓글 보기 (GET /community/{id}/comments)

4.1.1. 성공

HTTP request
GET /posts/1/comments HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 2309

{
  "comments" : [ {
    "comment_id" : 1,
    "comment_content" : "content1",
    "post_id" : 1,
    "comment_like_count" : 9,
    "comment_time" : "2024-04-29T07:26:55.42127587",
    "liked" : false,
    "replies" : [ ],
    "updated" : false,
    "reported" : false,
    "member_id" : 1,
    "mine" : true
  }, {
    "comment_id" : 2,
    "comment_content" : "content2",
    "post_id" : 1,
    "comment_like_count" : 10,
    "comment_time" : "2024-04-29T07:26:55.421294896",
    "liked" : false,
    "replies" : [ ],
    "updated" : true,
    "reported" : false,
    "member_id" : 1,
    "mine" : true
  }, {
    "comment_id" : 3,
    "comment_content" : "content3",
    "post_id" : 1,
    "comment_like_count" : 11,
    "comment_time" : "2024-04-29T07:26:55.421309072",
    "liked" : true,
    "replies" : [ {
      "reply_id" : 12,
      "reply_content" : "reply content 12",
      "reply_like_count" : 6,
      "reply_time" : "2024-04-29T07:26:55.421342515",
      "liked" : false,
      "updated" : true,
      "reported" : false,
      "member_id" : 1,
      "mine" : true
    }, {
      "reply_id" : 13,
      "reply_content" : "reply content 13",
      "reply_like_count" : 7,
      "reply_time" : "2024-04-29T07:26:55.421354597",
      "liked" : false,
      "updated" : false,
      "reported" : false,
      "member_id" : 1,
      "mine" : true
    }, {
      "reply_id" : 14,
      "reply_content" : "reply content 14",
      "reply_like_count" : 8,
      "reply_time" : "2024-04-29T07:26:55.421364426",
      "liked" : false,
      "updated" : true,
      "reported" : false,
      "member_id" : 1,
      "mine" : true
    }, {
      "reply_id" : 15,
      "reply_content" : "reply content 15",
      "reply_like_count" : 9,
      "reply_time" : "2024-04-29T07:26:55.421373833",
      "liked" : false,
      "updated" : false,
      "reported" : false,
      "member_id" : 1,
      "mine" : true
    } ],
    "updated" : false,
    "reported" : false,
    "member_id" : 1,
    "mine" : true
  }, {
    "comment_id" : 4,
    "comment_content" : "content4",
    "post_id" : 1,
    "comment_like_count" : 12,
    "comment_time" : "2024-04-29T07:26:55.421321546",
    "liked" : false,
    "replies" : [ ],
    "updated" : true,
    "reported" : false,
    "member_id" : 1,
    "mine" : true
  } ]
}

4.2. 특정 게시글의 댓글 작성하기 (POST /community/{id}/comments)

4.2.1. 성공

HTTP request
POST /posts/51/comments HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 29
Host: localhost:8080

{
  "content" : "content51"
}
HTTP response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0

4.3. 댓글 좋아요 (PUT /comments/{id}/like)

4.3.1. 성공

HTTP request
PUT /comments/3/like HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 41

{
  "like_count" : 5,
  "liked" : false
}

4.4. 댓글 수정 (PUT / comments/{id})

4.4.1. 성공

HTTP request
PUT /comments/3 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 39
Host: localhost:8080

{
  "content" : "new comment content"
}
HTTP response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0

4.4.2. 실패

권한이 없는 경우
HTTP request
PUT /comments/3 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 39
Host: localhost:8080

{
  "content" : "new comment content"
}
HTTP response
HTTP/1.1 403 Forbidden
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 61

{
  "message" : "권한이 없습니다.",
  "errors" : [ ]
}
내용이 없는 경우
HTTP request
PUT /comments/3 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 22
Host: localhost:8080

{
  "content" : null
}
HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 159

{
  "message" : "Invalid input value",
  "errors" : [ {
    "field" : "content",
    "value" : null,
    "reason" : "댓글의 내용이 없습니다."
  } ]
}

4.5. 댓글 삭제 (DELETE /comments/{id})

4.5.1. 성공

HTTP request
DELETE /comments/3 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0

4.5.2. 실패

권한이 없는 경우
HTTP request
DELETE /comments/3 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Host: localhost:8080
HTTP response
HTTP/1.1 403 Forbidden
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 61

{
  "message" : "권한이 없습니다.",
  "errors" : [ ]
}

4.6. 특정 댓글의 대댓글 작성하기 (POST /comments/{id}/reply)

4.6.1. 성공

HTTP request
POST /comments/3/reply HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 33
Host: localhost:8080

{
  "content" : "reply content"
}
HTTP response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0

4.6.2. 실패

대댓글에 작성하는 경우
HTTP request
POST /comments/3/reply HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 33
Host: localhost:8080

{
  "content" : "reply content"
}
HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
Content-Length: 79

{
  "message" : "답글에 답글을 달 수 없습니다.",
  "errors" : [ ]
}

5. 신고 관리

5.1. 특정 게시글 신고하기 (POST /posts/{id}/report)

5.1.1. 성공

HTTP request
POST /posts/1/report HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 33
Host: localhost:8080

{
  "message" : "신고 내용"
}
HTTP response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0

5.2. 특정 댓글 신고하기 (POST /comments/{id}/report)

5.2.1. 성공

HTTP request
POST /comments/1/report HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer aws-cognito-access-token
Content-Length: 33
Host: localhost:8080

{
  "message" : "신고 내용"
}
HTTP response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0