[SeSACx코딩온] REST Client를 활용한 테스트
REST Client를 활용한 테스트
테스트 준비
- 확장프로그램을 검색하여 설치해줍니다.
-
확장자 .http 나 .rest 인 파일을 생성해 줍니다. (현재 api.http)
-
위와 같이 Send Request가 나오면 준비 완료입니다.
- 클릭 시, 오른쪽과 같이 Response가 출력됩니다.
전체 코드
@server = http://localhost:8000
@player_id = 1
@team_id = 1
### 전체 선수 조회
GET /players
### id로 특정 선수 조회
GET /players/
### 선수 추가
POST /players
Content-Type: application/json; charset=UTF-8
{
"name": "손흥민",
"age": 31,
"team_id": 2
}
### 특정 선수의 소속 팀 변경
PATCH /players//team
Content-Type: application/json; charset=UTF-8
// 성공하면 1을 출력, 실패하면 0을 출력함.
// 주석을 { } 안에 넣으면 SyntaxError다. 주석을 json으로 해석해버리기 때문이다.
{
"team_id": 1
}
### 특정 선수 방출 (삭제)
DELETE /players/
// 삭제되면 isDeleted = 1, 결과값이 true 가 출력된다.
// 이미 삭제되어 없는 선수를 삭제하면 결과값이 false 가 출력된다.
// cascade 설정을 해놓았기 때문에, 선수가 삭제되면 프로필도 함께 삭제된다.
### 전체 팀 조회
GET /teams
### 전체 팀 조회 + 이름순 정렬
GET /teams?sort=name_asc
### 팀 이름 검색
GET /teams?search=KT
### 특정 팀 조회
GET /teams/
### 특정 팀의 모든 선수 조회
GET /teams//players
0. 기본 정보
@server = http://localhost:8000
@player_id = 1
@team_id = 1
- 서버 URL:
http://localhost:8000
- 선수 ID:
1
- 팀 ID:
1
1. 전체 선수 조회
요청
GET http://localhost:8000/players
응답
-
서버는 전체 선수 목록을 JSON 형식으로 반환합니다. 응답은 다음과 같습니다
-
스크린샷과 같이 MySQL에 있는 내용과 같음을 알 수 있습니다.
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 1073
ETag: W/"431-saebBYevUdOaf13TAw/cJs9/rAg"
Date: Thu, 01 Aug 2024 15:32:16 GMT
Connection: close
[
{
"player_id": 1,
"name": "홍길동",
"age": 20,
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-02T00:12:44.000Z",
"team_id": 1
},
{
"player_id": 2,
"name": "성춘향",
"age": 21,
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-02T00:12:44.000Z",
"team_id": 3
},
{
"player_id": 3,
"name": "김첨지",
"age": 22,
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-02T00:12:44.000Z",
"team_id": 2
},
{
"player_id": 4,
"name": "김수지",
"age": 23,
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-02T00:12:44.000Z",
"team_id": 4
},
{
"player_id": 5,
"name": "강민재",
"age": 19,
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-02T00:12:44.000Z",
"team_id": 1
},
{
"player_id": 6,
"name": "황찬수",
"age": 28,
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-02T00:12:44.000Z",
"team_id": 1
},
{
"player_id": 7,
"name": "이장우",
"age": 24,
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-02T00:12:44.000Z",
"team_id": 2
},
{
"player_id": 8,
"name": "박나래",
"age": 30,
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-02T00:12:44.000Z",
"team_id": 3
}
]
2. 특정 선수 조회
선수의 ID를 통해 특정 선수를 조회할 수 있습니다.
요청
GET http://localhost:8000/players/1
응답
서버는 해당 선수의 정보를 JSON 형식으로 반환합니다. 응답은 다음과 같습니다.
{
"player_id": 1,
"name": "홍길동",
"age": 20,
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-02T00:12:44.000Z",
"team_id": 1,
"Profile": {
"position": "1B",
"salary": 100
}
}
3. 선수 추가
새 선수를 추가하려면 POST 요청을 사용합니다. 선수 정보를 JSON 형식으로 제공해야 합니다.
요청
POST http://localhost:8000/players
Content-Type: application/json; charset=UTF-8
{
"name": "손흥민",
"age": 31,
"team_id": 2
}
응답
서버는 추가된 선수의 정보를 포함한 JSON 객체를 반환합니다. 응답은 다음과 같습니다.
{
"player_id": 9,
"name": "손흥민",
"age": 31,
"team_id": 2,
"updatedAt": "2024-08-02T00:13:44.000Z",
"createdAt": "2024-08-02T00:13:44.000Z"
}
4. 특정 선수의 소속 팀 변경
선수의 소속 팀을 변경하려면 PATCH 요청을 사용합니다.
성공 시
요청
PATCH http://localhost:8000/players/1/team
Content-Type: application/json; charset=UTF-8
{
"team_id": 1
}
응답
[
1
]
실패 시
요청
PATCH http://localhost:8000/players/1/team
Content-Type: application/json; charset=UTF-8
{
"team_id": 999
}
응답
[
0
]
성공 시, 서버는 1
을 반환합니다. 실패 시, 서버는 0
을 반환합니다.
5. 특정 선수 방출 (삭제)
선수를 삭제하려면 DELETE 요청을 사용합니다.
요청
DELETE http://localhost:8000/players/1
응답
true
- 삭제되면 isDeleted = 1 이므로 결과값이
true
가 출력됩니다. - 이미 삭제된 선수를 삭제하려고 하면
false
가 반환됩니다.
삭제된 선수는 프로필도 함께 삭제되며, cascade 설정으로 인해 관련된 모든 정보가 제거됩니다.
6. 전체 팀 조회
팀 목록을 조회하려면 다음과 같은 GET 요청을 서버에 보냅니다.
요청
GET http://localhost:8000/teams
응답
서버는 전체 팀 목록을 JSON 형식으로 반환합니다. 응답은 다음과 같습니다.
[
{
"team_id": 1,
"name": "sk"
},
{
"team_id": 2,
"name": "kt"
},
{
"team_id": 3,
"name": "nc"
},
{
"team_id": 4,
"name": "lg"
}
]
7. 전체 팀 조회 + 이름순 정렬
팀 목록을 이름 순으로 정렬하여 조회할 수 있습니다.
요청
GET http://localhost:8000/teams?sort=name_asc
응답
서버는 이름 순으로 정렬된 팀 목록을 JSON 형식으로 반환합니다.
[
{
"team_id": 2,
"name": "kt"
},
{
"team_id": 4,
"name": "lg"
},
{
"team_id": 3,
"name": "nc"
},
{
"team_id": 1,
"name": "sk"
}
]
8. 팀 이름 검색
팀 이름을 기준으로 검색할 수 있습니다.
요청
GET http://localhost:8000/teams?search=KT
응답
서버는 이름에 “KT”가 포함된 팀 목록을 JSON 형식으로 반환합니다.
[
{
"team_id": 2,
"name": "kt"
}
]
9. 특정 팀 조회
팀의 ID를 통해 특정 팀을 조회할 수 있습니다.
요청
GET http://localhost:8000/teams/1
응답
서버는 해당 팀의 정보를 JSON 형식으로 반환합니다. 응답은 다음과 같습니다.
{
"team_id": 1,
"name": "sk",
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-02T00:12:44.000Z"
}
10. 특정 팀의 모든 선수 조회
특정 팀에 소속된 모든 선수를 조회할 수 있습니다.
요청
GET http://localhost:8000/teams/1/players
응답
서버는 해당 팀에 소속된 선수 목록을 JSON 형식으로 반환합니다. 응답은 다음과 같습니다.
{
"team_id": 1,
"name": "sk",
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-02T00:12:44.000Z",
"Players": [
{
"player_id": 1,
"name": "홍길동",
"age": 20,
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-01T15:41:09.000Z",
"team_id": 1
},
{
"player_id": 5,
"name": "강민재",
"age": 19,
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-02T00:12:44.000Z",
"team_id": 1
},
{
"player_id": 6,
"name": "황찬수",
"age": 28,
"createdAt": "2024-08-02T00:12:44.000Z",
"updatedAt": "2024-08-02T00:12:44.000Z",
"team_id": 1
}
]
}