Postman — Pre-request Script 활용

Yorath Jang
7 min readOct 4, 2023

--

이전에 포스트맨의 Test 기능, 정확하게 얘기하면 요청 이 후의 Test Script실행으로 API공통으로 사용되는 환경변수의 값을 설정하는 방법을 통해, API 호출 시 반복적으로 실행해야 하는 작업들을 없앨 수 있는 방법을 소개했는데요.

이 방법보다 조금 더 편리하고 적절한 방법을 소개할까 합니다.

Pre-request Script를 사용하는 방법인데,
API 실행전 수행해야 할 스크립트를 컬렉션 또는 컬렉션내의 폴더 단위로실행할 수 있도록 해주는 기능입니다.

Test기능과의 차이점은 명확합니다.
Pre-request Script는 말 그대로 API 호출 전 실행되는 스크립트이며 Tests의 스크립트는 API 호출 후 실행되는 스크립트입니다.

따라서, API 호출 전 공통의 특정 작업을 수행하도록 하는 방법에는 당연히 Tests 보다 지금 소개하는 Pre-request Script기능을 사용하는 게 맞습니다.

자세한 사용법은 아래 포스트맨 공식 링크를 통해 확인이 가능합니다.

사용목적

일반적으로 특정 사용자에게 서비스를 제공하기 위한 API (REST API)는 대부분, 본 API의 기능을 제공하기 전, 인증/인가 등(API 접근 및 사용권한 확인)의 보완과 관련된 프로세스가 반드시 수행됩니다.

실제의 인증서비스가 붙지 않는 단계인 API 개발 및 테스트 단계에서는, 각각의 API 호출시마다 매번 이런 별도의 인증 프로세스를 태우는 게 여간 번거로운 일이 아닙니다.

또한, 위의 경우 외에도 컬렉션 또는 폴더 내의 모든 API들의 헤더 값을 특정값으로 지정해야 하거나, 테스트를 위해서 요청 항목들의 변경 작업들이 필요한 경우에는 해당 Pre-Request Script 기능은 매우 훌륭한 기능을 제공합니다.

사용방법

포스트맨 화면에서 사전 실행 스크립트를 적용할 컬렉션 또는 컬렉션 내의 폴더를 선택하면 몇 가지 탭이 우측에 나타나는데 거기에서 Pre-request Script를 탭을 클릭합니다.

스크립트를 작성할 수 있는 영역이 나타나는데 실행할 스크립트를 포스트맨 스크립트 문법에 맞게 작성합니다.

아래는 간단한 샘플 코드입니다.

pm.sendRequest({
url: pm.environment.get('auth-url')+'/auth/token',
method: 'POST',
header: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: {
mode: 'urlencoded',
urlencoded: [
{
key: "grant_type",
value: "client_credentials",
disabled: false
},
{
key: "client_id",
value: "xxxxx",
disabled: false
},
{
key: "client_secret",
value: "xxxx",
disabled: false
}
]
}
}, function (err, res) {
res_data = res.json();
console.log(res_data);

// 환경변수 값 세팅
pm.environment.set("access_token", res_data.access_token);

// 헤더설정
pm.request.headers.add({
key: "Authorization",
value: res_data.access_token
});
});

이 샘플 코드는 단순합니다.

1. sendRequest를 사용해서 API 호출 전 인증 API를 먼저 호출하게 합니다.

pm.sendRequest({
url: pm.environment.get('auth-url')+'/auth/token',

2. 컬렉션 환경변수 중 access_token값에 인증 API의 호출로 반환된 응답항목 중 token값을 지정합니다.

function (err, res) {
res_data = res.json();
console.log(res_data);

// 환경변수 값 세팅
pm.environment.set("access_token", res_data.access_token);
...
...
}

res.json()을 통해 응답 값을 json객체로 변환 후, 콘솔에 출력하고 pm.environment.set() 함수를 통해 포스트맨의 환경변수 access_token항목에 값을 지정합니다.

이 access_token은 컬렉션 또는 폴더 내의 모든 API에서 필수로 사용하는 파라미터로 이 스크립트를 통해 API들이 호출될 때마다 실행되어 인증 API에서 얻어온 토큰 값이 저장되게 됩니다.

API 호출마다 인증 API를 별도로 호출해서 토큰 값을 따로 지정해야 할 필요가 없습니다.

참고로, console.log()를 사용하면 실제 호출 결과 데이터 값을 포스트맨의 콘솔로 확인할 수 있습니다.

포스트맨의 스크립트는 그 문법이 일반 JavaScript로 거의 유사하기 때문에 큰 어려움 없이 사용할 수 있습니다.

자주 사용되는 함수나 코드는 snippet을 제공해 주기 때문에 해당 기능을 활용하면 좀 더 편하게 사용이 가능합니다.

환경변수뿐만이 아니라 아래의 코드와 같이 모든 API 요청 헤더에 특정 값을 추가한다던가 하는 여러 가지 확장된 기능으로 활용할 수 있습니다.

// 헤더설정
pm.request.headers.add({
key: "Authorization",
value: res_data.access_token
});

포스트맨 스크립트의 상세한 사용법은 위의 링크를 통해 확인하시면 됩니다.

지금까지 API 개발 및 테스트 작업의 효율성과 생산성을 높여줄 수 있는 포스트맨의 Pre-request Script기능에 대한 간단한 소개였습니다.

--

--