(Postman) Pre-request Script 활용해서 토큰 갱신하기

SteadySlower·2023년 11월 7일
0

Tips

목록 보기
17/20

안녕하세요. 이번 포스팅에서는 실무에서 Postman을 사용할 때 활용할 수 있는 꿀팁을 하나 소개하고자 합니다.

Token 만료…🫠

JWT 토큰을 통해서 인증을 하는 서버의 API를 Postman를 통해서 사용하게 되면 토큰을 입력하고 한동안은 사용이 잘 되지만 토큰 만료 시간이 지나면 다시 로그인 API를 호출해서 토큰을 받아오고 그 토큰을 다시 입력해야 하는 귀찮은 작업을 해야할 때가 많습니다.

API를 실행할 때마다 새로운 토큰을 자동으로 받아오도록 하면 어떨까요?

Pre-request

Postman의 collection, folder, request에는 모두 Pre-request Script를 작성하는 부분이 있습니다. 이 부분에 JavaScript로 코드를 작성해두면 해당 코드를 요청을 보내기 전에 실행하게 됩니다.

이 코드에 아래처럼 미리 collection 변수에 저장된 이메일과 패스워드를 사용해서 매번 새로운 토큰을 받아올 수 있습니다. 자세한 내용은 아래 코드를 참고해주세요.

//👉 login API를 호출하는데 필요한 값들을 collection 변수에서 가져온다.
const baseUrl = pm.collectionVariables.get("baseUrl");
const testAccount = pm.collectionVariables.get("test email");
const testAccountPassword = pm.collectionVariables.get("test password");

//👉 url 및 쿠키 설정
const url = 'https://'+baseUrl+'/login/';
const headers = {
    'Cookie': '👉 로그인 Header에서 가져온 값'
};

//👉 API 양식에 맞추어 Body에 필요한 값 넣기
const formData = {
    'email': testAccount,
    'password': testAccountPassword
};

//👉 Request 객체 만들기
const requestSettings = {
    url: url,
    method: 'POST',
    header: headers,
    body: {
        mode: 'urlencoded',
        urlencoded: Object.entries(formData).map(([key, value]) => {
            return { key, value };
        })
    }
};

//👉 pm.sendRequest로 API를 호출할 수 있다
//👉 callback을 전달해서 요청을 받았을 때 할 동작을 설정한다.
pm.sendRequest(requestSettings, function (err, response) {
		//👉 응답을 파싱해서 Collection 변수에 저장할 수 있다.
    let json = response.json();
    pm.collectionVariables.set("token", json.data.token);
    console.log(json) //👉 콘솔에 출력할 수도 있다.
});

//⭐️ API 호출하고 바로 리턴되는 것이 아니라 콜백까지 실행되고 리턴됨!!!

콘솔에 출력된 내용은 앱의 좌하단에 콘솔을 누르면 볼 수 있습니다.

profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글