이 글은 내가 우아한테크캠프에서 배웠던 내용들을 복습하기 위해 진행하는 토이프로젝트(https://github.com/minseokLim/woowahan-tech-camp-review)를 중심으로 작성되었다.
일반적으로 업무에선 포스트맨을 많이 사용해왔다. 헌데 이와 같은 기능을 인텔리제이에서 자체적으로 제공한다는 걸 알게되었다.
1. 기본 사용법
사용법은 아주 간단하다. 프로젝트의 적당한 위치에 아래와 같이 .http 파일을 생성한다. 파일명은 나의 경우 도메인 이름으로 하였다.

그 다음 아래와 같이 파일 내에 요청을 작성해주면 된다.
###
POST localhost:8080/users
Content-Type: application/json
{
"loginId": "test1234",
"password": "password1234",
"nickName": "테스트계정",
"email": "test@test.com"
}
보다 자세한 설명은 인텔리제이 자체에서 제공하는 걸 보는 게 더 나을 것 같다.

2. 환경별 변수 지정
포스트맨과 마찬가지로 환경별 변수를 지정할 수도 있다. 프로젝트 최상단에 아래와 같이 rest-client.env.json를 생성한다.

그 다음 환경별로 변수를 지정해주면 된다. 예를 들면 로컬 환경과 개발환경, 운영환경의 host는 모두 다를 것이다. 아래와 같이 설정할 수 있다.
{
"local": {
"host": "localhost:8080"
},
"dev": {
"host": "dev.com"
},
"prod": {
"host": "prod.com"
}
}
그런 다음 .http 파일 내에 아래와 같이 작성해주면 'host'라는 변수를 사용할 수 있다.
###
POST {{host}}/users
Content-Type: application/json
{
"loginId": "test1234",
"password": "password1234",
"nickName": "테스트계정",
"email": "test@test.com"
}
3. 인증
대부분의 API는 인증이 필요하고, 때문에 세션ID나 토큰 등이 필요하게 된다. 매 요청마다 인증을 할 수는 없는 노릇이니 한 번의 인증으로 모든 요청에서 사용할 수 있도록 설정할 수 있다.(포스트맨에도 이와 같은 기능이 있다.)
예를 들면 /login API에서 리스판스로 아래와 같은 json 값이 내려온다고 가정하자.

그러면 아래와 같이 /login API 호출 시 accessToken 값을 저장할 수 있다.
###
POST {{host}}/login
Content-Type: application/json
{
"loginId": "test1234",
"password": "password1234"
}
> {% client.global.set("auth_token", response.body.accessToken); %}
이렇게 'auth_token'이라는 값으로 저장된 값은 .http 파일 내에서 아래처럼 사용이 가능하다.
###
PUT {{host}}/users/1
Content-Type: application/json
Authorization: Bearer {{auth_token}}
{
"loginId": "test1234",
"password": "newPassword1234",
"nickName": "newNickNm",
"email": "new@test.com"
}
4. 자동 생성
생성하고자하는 엔드포인트의 컨트롤러 파일에 가면 아래와 같은 아이콘을 확인할 수 있다.

이 부분을 클릭해주면 .http 파일이 아래와 같이 자동으로 생성된다.

개인적으로 포스트맨보단 이 기능을 사용하는 게 더 바람직한 것 같다. 왜냐하면 Request에 대한 형상 관리 또한 가능해지기 때문이다. 근데 사실 난 이 프로젝트를 진행하면서 모든 API에 대한 인수테스트 코드를 작성하다보니 굳이 이러한 방식의 테스트가 불필요하게 느껴지기도 했다.
'우아한테크캠프 Pro 리뷰' 카테고리의 다른 글
5. TDD (테스트 주도 개발) - 1 (0) | 2022.03.24 |
---|---|
4. ATDD (인수 테스트 주도 개발) (0) | 2022.03.23 |
3. JWT를 이용한 인증 구현 (0) | 2022.03.21 |
1. Checkstyle 플러그인, lombok.config 을 활용한 코딩 컨벤션 (0) | 2022.03.19 |
0. 시작 (0) | 2022.03.19 |