REST API
를 개발할 때 Postman
을 이용한 호출 테스트는 매우 유용하고 자주 쓰이는 방식입니다.
익숙해서.. 이미 너무 좋아서.. 많은 기능을 놓치고 있었습니다.
개발 생산성을 높이는 한 가지 기능을 소개할께요.
인증을 필요로 하는 요청이 있는 경우 Authorization
(인증헤더) 에 인증에 필요한 값을 들고 가는 경우가 있습니다.
대표적으로 JWT
토큰이 이에 해당합니다.
클라이언트는 최초 인증을 수행하고 JWT
토큰을 응답받으면 이후 모든 요청에 JWT
토큰을 요청에 포함시키게 됩니다.
Postman
을 이용한다면 아래처럼 할 것 입니다.
인증이 필요한 모든 요청에 새로 발행된 토큰을 포함시켜줘야 합니다.
조금 더 괜찮은 방법이 있습니다.
일단 Postman에서 현재 프로젝트의 API를 관리할 Collections
(폴더) 를 생성합니다.
저는 위처럼 도메인에 따라 API를 나눠서 구성했습니다.
이렇게 구성하면 관리 및 유지보수의 장점도 있지만 Authorization
헤더의 값을 상속 형태로 사용할 수 있는 큰 장점이 생깁니다.
폴더 구조로 만든 API 요청들에서 Authorization
값을 상속받아 사용할 수 있게 됩니다.
이제 새로 발행된 토큰으로 API 호출 테스트를 할다면 루트 컬렉션의 Authorization
값만 바꿔주면 됩니다.
Goooood
조금 더 생산성을 올려볼께요.
토큰이 발급될 때 자동으로 Authotization
값이 발급된 토큰값으로 변경된다면 어떨까요?
아주 멋지게 생산성을 올리는 결과가 될 것입니다.
이것 또한 가능합니다.
Postman에서 환경변수를 사용할 때에는 {{ }}
를 사용합니다.
일단 루트 컬렉션의 Authorization
값을 환경변수로 만듭니다.
이제 환경변수화 된 곳(token
) 에 동적으로 값을 넣어줄 것 입니다.
인증을 시도하고 토큰을 응답받는 API에서 작업할 것 입니다.
Postman 요청의 여러 탭 중에 Tests
라는 탭에서 스크립트를 작성할 수 있습니다.
문법 또한 굉장히 일반적? 이라서 사용하는 데에 큰 어려움이 없을 듯 합니다.
if (pm.response.code == 200) {
pm.environment.set('token', pm.response.json().token)
}
pm
은 postman
을 뜻합니다.
응답코드가 200인 경우에 환경변수를 변경하는 방식입니다.
응답값에 접근할 때에도 pm.response.json().key
.. 굉장히 직관적입니다.
토큰을 발행받는 API가 정상적으로 동작했다면 환경변수가 갱신됐을 것이고, 해당 환경변수를 Authotization
이 사용하기 때문에 자동으로 토큰이 발행될 때 발행된 토큰으로 요청이 가능하게 되었습니다. :)
https://www.udemy.com/course/build-production-ready-rest-api-with-spring-boot-expense-manager-api/