안녕하세요. 이번 포스팅에서는 실무에서 Postman을 사용할 때 활용할 수 있는 꿀팁을 하나 소개하고자 합니다.
JWT 토큰을 통해서 인증을 하는 서버의 API를 Postman를 통해서 사용하게 되면 토큰을 입력하고 한동안은 사용이 잘 되지만 토큰 만료 시간이 지나면 다시 로그인 API를 호출해서 토큰을 받아오고 그 토큰을 다시 입력해야 하는 귀찮은 작업을 해야할 때가 많습니다.
API를 실행할 때마다 새로운 토큰을 자동으로 받아오도록 하면 어떨까요?
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 호출하고 바로 리턴되는 것이 아니라 콜백까지 실행되고 리턴됨!!!
콘솔에 출력된 내용은 앱의 좌하단에 콘솔을 누르면 볼 수 있습니다.