이 글은 내가 우아한테크캠프에서 배웠던 내용들을 복습하기 위해 진행하는 토이프로젝트(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에 대한 인수테스트 코드를 작성하다보니 굳이 이러한 방식의 테스트가 불필요하게 느껴지기도 했다.

+ Recent posts