이전에 포스트맨의 Test 기능, 정확하게 얘기하면 요청 이 후의 Test Script실행으로 

API공통으로 사용되는 환경변수의 값을 설정하는 방법을 통해, API 호출 시 반복적으로 실행해야 하는 작업들을 없앨 수 있는 방법을 소개했는데요.

 

https://yonguri.tistory.com/140

 

Postman의 tests 기능을 활용한 환경변수 자동 세팅방법

Rest API를 개발하는 경우, 이제는 백앤드 업무영역은 언어에 상관없이 포스트맨의 사용은 거의 필수가 되었다고 할 수 있습니다. 포스트맨을 어떻게 사용하느냐에 따라 개발 생산성에 큰 차이를

yonguri.tistory.com

 

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

 

Pre-request Script를 사용하는 방법인데, 

API 실행전 수행해야 할 스크립트를 컬렉션 또는 컬렉션내의 폴더 단위로실행할 수 있도록 해주는 기능입니다.

 

Test기능과의 차이점은 명확합니다.

Pre-request Script는 말 그대로 API 호출 전 실행되는 스크립트이며

Tests의 스크립트는 API 호출 후 실행되는 스크립트입니다.

 

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

 

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

https://learning.postman.com/docs/writing-scripts/pre-request-scripts/

 

사용목적

일반적으로 특정 사용자에게 서비스를 제공하기 위한  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기능에 대한 간단한 소개였습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기