1. API 목록
2. POST: 팀원 추가
| Parameter | Description |
|---|---|
|
팀 ID |
| Name | Description |
|---|---|
|
Bearer {accessToken} (관리자) |
POST /teams/1/members HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer admin.access.token
Content-Length: 97
Host: localhost:8080
{
"memberName" : "이옵스",
"memberStudentId" : "202612345",
"roleType" : "ROLE_팀원"
}
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
| Path | Type | Description |
|---|---|---|
|
|
추가할 팀원 이름 |
|
|
추가할 팀원 학번 |
|
|
추가할 팀원의 역할(ROLE_팀장, ROLE_팀원) |
2.1. ⚠️ 실패 케이스
❌ Case 1: 팀원명이 비어있음
POST /teams/1/members HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer admin.access.token
Content-Length: 88
Host: localhost:8080
{
"memberName" : "",
"memberStudentId" : "202612345",
"roleType" : "ROLE_팀원"
}
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 90
{
"message" : "[memberName] : 추가할 팀원명은 비어 있을 수 없습니다."
}
| Path | Type | Description |
|---|---|---|
|
|
비어있는 팀원명 |
|
|
팀원 학번 |
|
|
추가할 팀원의 역할(ROLE_팀장, ROLE_팀원) |
❌ Case 2: 팀원학번이 비어있음
POST /teams/1/members HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer admin.access.token
Content-Length: 88
Host: localhost:8080
{
"memberName" : "이옵스",
"memberStudentId" : "",
"roleType" : "ROLE_팀원"
}
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 162
{
"message" : "[memberStudentId] : 학번은 9자리 숫자여야 합니다., [memberStudentId] : 추가할 팀원학번은 비어 있을 수 없습니다."
}
| Path | Type | Description |
|---|---|---|
|
|
팀원명 |
|
|
비어있는 팀원 학번 |
|
|
추가할 팀원의 역할(ROLE_팀장, ROLE_팀원) |
❌ Case 3: 존재하지 않는 팀 ID
POST /teams/999/members HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer admin.access.token
Content-Length: 97
Host: localhost:8080
{
"memberName" : "이옵스",
"memberStudentId" : "202612345",
"roleType" : "ROLE_팀원"
}
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" : "팀이 존재하지 않습니다."
}
| Path | Type | Description |
|---|---|---|
|
|
팀원명 |
|
|
팀원 학번 |
|
|
추가할 팀원의 역할(ROLE_팀장, ROLE_팀원) |
❌ Case 4: 팀원명과 팀원학번이 맞지 않음
POST /teams/1/members HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer admin.access.token
Content-Length: 97
Host: localhost:8080
{
"memberName" : "이옵스",
"memberStudentId" : "202612345",
"roleType" : "ROLE_팀원"
}
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 76
{
"message" : "입력한 학번과 이름이 일치하지 않습니다."
}
| Path | Type | Description |
|---|---|---|
|
|
팀원명 (학번과 일치하지 않음) |
|
|
팀원 학번 (이름과 일치하지 않음) |
|
|
추가할 팀원의 역할(ROLE_팀장, ROLE_팀원) |
❌ Case 5: 동일한 참가자명 + 학번이 해당 팀에 이미 존재
POST /teams/1/members HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer admin.access.token
Content-Length: 97
Host: localhost:8080
{
"memberName" : "이옵스",
"memberStudentId" : "202612345",
"roleType" : "ROLE_팀원"
}
HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 60
{
"message" : "이미 팀에 등록된 팀원입니다."
}
| Path | Type | Description |
|---|---|---|
|
|
이미 등록된 팀원명 |
|
|
이미 등록된 팀원 학번 |
|
|
추가할 팀원의 역할(ROLE_팀장, ROLE_팀원) |
3. DELETE: 팀원 삭제
| Parameter | Description |
|---|---|
|
팀 ID |
|
회원 ID |
| Name | Description |
|---|---|
|
Bearer {accessToken} (관리자) |
DELETE /teams/1/members/1 HTTP/1.1
Authorization: Bearer admin.access.token
Host: localhost:8080
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
3.1. ⚠️ 실패 케이스
❌ Case 1: 존재하지 않는 팀 ID
DELETE /teams/999/members/1 HTTP/1.1
Authorization: Bearer admin.access.token
Host: localhost:8080
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" : "팀이 존재하지 않습니다."
}
| Parameter | Description |
|---|---|
|
존재하지 않는 팀 ID |
|
회원 ID |
❌ Case 2: 존재하지 않는 멤버 ID
DELETE /teams/1/members/999 HTTP/1.1
Authorization: Bearer admin.access.token
Host: localhost:8080
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: 54
{
"message" : "회원을 찾을 수 없습니다."
}
| Parameter | Description |
|---|---|
|
팀 ID |
|
존재하지 않는 회원 ID |
❌ Case 3: 삭제 대상 팀원이 해당 팀에 없음
DELETE /teams/1/members/1 HTTP/1.1
Authorization: Bearer admin.access.token
Host: localhost:8080
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: 57
{
"message" : "해당 팀의 팀원이 아닙니다."
}
| Parameter | Description |
|---|---|
|
팀 ID |
|
해당 팀에 속하지 않은 회원 ID |