Postman을 이용해서 API 호출 테스트 "잘" 해보기 - 인증 헤더에 토큰 추가 자동화

Kim Dae Hyun·2022년 3월 15일
2

REST API를 개발할 때 Postman을 이용한 호출 테스트는 매우 유용하고 자주 쓰이는 방식입니다.

익숙해서.. 이미 너무 좋아서.. 많은 기능을 놓치고 있었습니다.
개발 생산성을 높이는 한 가지 기능을 소개할께요.


📌 Authorization 헤더 추가 (상속)

인증을 필요로 하는 요청이 있는 경우 Authorization (인증헤더) 에 인증에 필요한 값을 들고 가는 경우가 있습니다.

대표적으로 JWT 토큰이 이에 해당합니다.

클라이언트는 최초 인증을 수행하고 JWT 토큰을 응답받으면 이후 모든 요청에 JWT 토큰을 요청에 포함시키게 됩니다.

Postman을 이용한다면 아래처럼 할 것 입니다.

인증이 필요한 모든 요청에 새로 발행된 토큰을 포함시켜줘야 합니다.


조금 더 괜찮은 방법이 있습니다.
일단 Postman에서 현재 프로젝트의 API를 관리할 Collections(폴더) 를 생성합니다.

저는 위처럼 도메인에 따라 API를 나눠서 구성했습니다.

이렇게 구성하면 관리 및 유지보수의 장점도 있지만 Authorization 헤더의 값을 상속 형태로 사용할 수 있는 큰 장점이 생깁니다.

폴더 구조로 만든 API 요청들에서 Authorization 값을 상속받아 사용할 수 있게 됩니다.

이제 새로 발행된 토큰으로 API 호출 테스트를 할다면 루트 컬렉션의 Authorization 값만 바꿔주면 됩니다.

Goooood

📌 Authorization 헤더 추가 (자동)

조금 더 생산성을 올려볼께요.

토큰이 발급될 때 자동으로 Authotization 값이 발급된 토큰값으로 변경된다면 어떨까요?

아주 멋지게 생산성을 올리는 결과가 될 것입니다.
이것 또한 가능합니다.

Postman에서 환경변수를 사용할 때에는 {{ }}를 사용합니다.

일단 루트 컬렉션의 Authorization 값을 환경변수로 만듭니다.

이제 환경변수화 된 곳(token) 에 동적으로 값을 넣어줄 것 입니다.
인증을 시도하고 토큰을 응답받는 API에서 작업할 것 입니다.

Postman 요청의 여러 탭 중에 Tests 라는 탭에서 스크립트를 작성할 수 있습니다.
문법 또한 굉장히 일반적? 이라서 사용하는 데에 큰 어려움이 없을 듯 합니다.

if (pm.response.code == 200) {
    pm.environment.set('token', pm.response.json().token)
}

pmpostman을 뜻합니다.

응답코드가 200인 경우에 환경변수를 변경하는 방식입니다.
응답값에 접근할 때에도 pm.response.json().key .. 굉장히 직관적입니다.


토큰을 발행받는 API가 정상적으로 동작했다면 환경변수가 갱신됐을 것이고, 해당 환경변수를 Authotization이 사용하기 때문에 자동으로 토큰이 발행될 때 발행된 토큰으로 요청이 가능하게 되었습니다. :)


📌 참고

https://www.udemy.com/course/build-production-ready-rest-api-with-spring-boot-expense-manager-api/

profile
좀 더 천천히 까먹기 위해 기록합니다. 🧐

0개의 댓글