1. API 목록

2. POST: 팀 댓글 등록

Table 1. /teams/{teamId}/comments
Parameter Description

teamId

댓글을 등록할 팀의 ID

Table 2. HTTP Request Headers
Name Description

Authorization

Bearer {accessToken}

HTTP Request
POST /teams/1/comments HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer member.access.token
Content-Length: 57
Host: localhost:8080

{
  "description" : "정말 멋진 프로젝트네요!"
}
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Table 3. Request Fields
Path Type Description

description

String

댓글 내용

2.1. ⚠️ 실패 케이스

❌ Case 1: 존재하지 않는 팀
POST /teams/999/comments HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer member.access.token
Content-Length: 57
Host: localhost:8080

{
  "description" : "정말 멋진 프로젝트네요!"
}
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 53

{
  "message" : "팀이 존재하지 않습니다."
}

3. GET: 팀 댓글 목록 조회

Table 4. /teams/{teamId}/comments
Parameter Description

teamId

댓글을 조회할 팀의 ID

Table 5. HTTP Request Headers
Name Description

Authorization

Bearer {accessToken}

HTTP Request
GET /teams/1/comments HTTP/1.1
Authorization: Bearer member.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;charset=UTF-8
Content-Length: 275

[ {
  "commentId" : 1,
  "description" : "정말 멋진 프로젝트네요!",
  "memberId" : 1,
  "memberName" : "이옵스",
  "teamId" : 1
}, {
  "commentId" : 2,
  "description" : "고생하셨습니다!",
  "memberId" : 2,
  "memberName" : "김옵스",
  "teamId" : 1
} ]
Table 6. Response Body’s Fields
Path Type Description

[]

Array

댓글 목록

[].commentId

Number

댓글 ID

[].description

String

댓글 내용

[].memberId

Number

작성자 ID

[].memberName

String

작성자 이름

[].teamId

Number

팀 ID

4. PATCH: 팀 댓글 수정

Table 7. /teams/{teamId}/comments/{commentId}
Parameter Description

teamId

팀 ID

commentId

수정할 댓글 ID

Table 8. HTTP Request Headers
Name Description

Authorization

Bearer {accessToken}

HTTP Request
PATCH /teams/1/comments/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer member.access.token
Content-Length: 57
Host: localhost:8080

{
  "description" : "수정된 댓글 내용입니다."
}
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Table 9. Request Fields
Path Type Description

description

String

수정할 댓글 내용

4.1. ⚠️ 실패 케이스

❌ Case 1: 본인이 작성하지 않은 댓글
PATCH /teams/1/comments/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer member.access.token
Content-Length: 57
Host: localhost:8080

{
  "description" : "수정된 댓글 내용입니다."
}
HTTP/1.1 403 Forbidden
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 53

{
  "message" : "댓글 작성자가 아닙니다."
}

5. DELETE: 팀 댓글 삭제

Table 10. /teams/{teamId}/comments/{commentId}
Parameter Description

teamId

팀 ID

commentId

삭제할 댓글 ID

Table 11. HTTP Request Headers
Name Description

Authorization

Bearer {accessToken}

HTTP Request
DELETE /teams/1/comments/1 HTTP/1.1
Authorization: Bearer member.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

5.1. ⚠️ 실패 케이스

❌ Case 1: 본인이 작성하지 않은 댓글
DELETE /teams/1/comments/1 HTTP/1.1
Authorization: Bearer member.access.token
Host: localhost:8080
HTTP/1.1 403 Forbidden
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 53

{
  "message" : "댓글 작성자가 아닙니다."
}