본문 바로가기
테스트코드

Postman_ 변수 사용해 응답을 헤더에 바로 담기

by zenna 2024. 4. 18.
728x90

많은 웹 사이트에서 사용자 인증을 할 때, 

1. 로그인 정보로 토큰 취득

2. 토큰을 헤더에 담고

3. 매 요청 시 토큰을 담은 헤더를 보냄

방식으로 진행합니다.

따라서 변경되지 않는 고정 토큰을 사용할 때를 제외하고는 포스트맨에서 API를 체크하기 위해

로그인API 실행 --> 응답에서 토큰값을 복사 --> 헤더에 넣고 -->원하는 요청 실행

을 반복해야 합니다.

 

매번 이렇게 하면 너무 귀찮으니까 로그인 API가 실행되면 응답에서 토큰을 찾아 모든 request의 헤더에 자동으로 넣어주려 합니다. 꼭 토큰이 아니더라도 요청의 응답을 전역변수로 지정하는 방법이므로 여러 가지로 활용이 가능해요

 

방식은 아래 순서로 진행됩니다!

1. 컬렉션 (request들의 집합)에서 공통으로 사용할 변수를 하나 정의해 request의 헤더에 할당해둡니다.

2. 로그인 request 를 실행하면 response에서 토큰에 해당하는 값을 찾습니다.

3. 토큰값을 1에서 선언한 변수에 할당해줍니다. 

 

1-1. 변수 설정하기

(1) 사용할 컬렉션을 클릭

(2) 컬렉션 환경설정 화면에서 Variables(한국어 버전으로는 아마도 '변수')를 클릭합니다.

(3) 사용할 변수의 이름입니다. 

(4) 최초값입니다. 필요하면 기재해 주면 되고, 아니면 공란으로 둡니다.

(5) 어떤 일련의 과정을 통해 이 변수의 값이 변경될 수 있습니다. 현재 변수의 값이 어떤 것인지를 알려줍니다.

 

변수 값을 설정하거나 수정한 경우 반드시 Ctrl+s를 눌러 저장해주세요! 저장하지 않으면 반영되지 않습니다. 전 여러번 까먹고 헤맸습니다 ^_^

 

1-2. 변수 사용하기

변수는 `{{변수명}}` 의 형태로 사용하면 됩니다. 위 캡쳐 화면에서 'test서버'와 '운영서버'라는 변수를 설정해두었죠? 이렇게 해두고 url 주소를 변수를 활용해 작성하면 request를 두 개 작성하지 않고 편리하게 운영서버와 test를 번갈아가며 사용할 수 있습니다. 

request를 하나 추가해주고

자동완성도 되죠? 아래처럼 작성하면 www.test.co.kr/login  이라는 주소로 인식합니다

 

이제 헤더에 토큰값으로 넣어줄 변수를 만들거예요. 변수 이름은 토큰으로 하겠습니다.

1-1 에서 적은 것처럼 컬렉션 클릭 - variables 로 들어가 변수를 하나 정의해줍니다. 저는 변수명을 '토큰'이라고 할게요

1-3. 헤더에 변수 할당하기

request를 보낼 때 헤더값을 설정하는 방법은 아래와 같아요.

 

컬렉션-해당하는 request로 들어가서 - (1) Headers를 클릭하고

(2) 헤더의 key값(API를 처리할 서버에서 찾을 이름) 을 적어줍니다.

(3) `{{토큰}}` 이라고 작성해두면 '토큰'변수의 값을 찾아서 응답을 보낼 때 담아줄거예요.

 

2-1. 로그인 API를 수행하는 request를 만들기

(1) 요청방식. 서버에서 지정한 방식을 따라가야 합니다.

(2) url

(3) get방식을 사용해 url에 파라미터를 할당하는 경우 여기서 작성하면 됩니다. 작성한 내용이 url에 자동으로 반영됩니다.

(4) 파라미터를 json방식으로 묶어 요청에 담아 보내는 방식을 사용하는 경우에는 여기서 작성합니다. 자바스크립트로 요청을 보내는 경우 많이 쓰게 될 거예요. (5) raw를 선택합니다.

(6) 요청값을 json형태로 작성해줍니다. 이 화면에서는 'id'라는 키에 'iamtestid'라는 아이디를, 'pw'라는 키에 'testPw~!'라는 비밀번호 값을 넣어줬습니다. 

(7) 실행하면 응답이 여기에 표시됩니다!

 

응답이 아래처럼 왔다고 가정하겠습니다.

{
    "success": true,
    "유저정보": {
        "name" : "길동",
        "gender" : "M",
        "type" : "VIP"
    },
    "응답받은토큰": "eyJ0eXAiOiJKV1QiLCJdfwexxs4857"
}

이 응답에서 `응답받은토큰`의 값을 토큰이라고 하고, 헤더에 할당해둔 변수에 저장해주어야 합니다. 

 

2-2. 응답에서 필요한 내용을 추출해 변수에 저장하기

상단의 'Tests'탭을 클릭하면, 응답을 받고 나서 수행할 내용을 코드로 작성할 수 있어요. 자바스크립트..로 쓰는 것 같아요.

작성 칸에 아래처럼 작성합니다.

var data = JSON.parse(responseBody); // 응답을 JSON형식으로 변환
//변환된 json에서 토큰값에 해당하는 값을 가져오고
//위에서 헤더에 담기 위해 정의해주었던 변수명을 언급해 저장해줍니다
pm.collectionVariables.set("토큰", data["응답받은토큰"]);

작성을 저장하고, 다시 이 로그인 request를 실행하면?

응답받은 값이 컬렉션의 전역번수 '토큰'에 저장되어 있는 것을 확인할 수 있습니다!

이제 request를 새로 만들더라도 1-3에서 했던 것처럼 헤더에 변수를 토큰값으로 지정해두면 알아서 토큰값을 찾아갈 거예요.

 

끝~

728x90

댓글