[Postman] Pre-request script로 headers 설정하기

toto9602·2024년 7월 25일

본 포스팅에서는, API 개발 및 테스트 과정에서 많이 사용하곤 하는 Postman 기능 중 하나인, Pre-request script의 간단한 사용법을 정리하고 소개드리려 합니다 :)

잘못된 내용에 대한 피드백은 언제나 감사드립니다! (_ _)

참고 자료

Postman Learning Center - Write pre-request scripts

Pre-request script ?

[ 출처 : Postman Learning Center ]
You can use pre-request scripts in Postman to execute JavaScript before a request runs. By including code in the Pre-request tab for a request, collection, or folder, you can carry out pre-processing such as setting variable values, parameters, headers, and body data. You can also use pre-request scripts for debugging code, for example by logging output to the Postman Console.

→ 요청을 전송하기 전에 실행할 수 있는 Javascript!
→ 파라미터, 헤더, 요청의 Body 등을 세팅하는 데 다양하게 활용 가능!

사용해 보기

** 이하의 예시는, 제가 실제 프로젝트에서 사용했던,
API 사용 권한 인가를 위해 암호화된 값을 headers에 담아 전송하는 예시를
간소화한 상황을 가정하고 있습니다! :)

1. Pre-request 탭 진입하기

Postman의 개별 요청 탭에서, Pre-request Script 탭으로 진입합니다!

2. Pre-request script 작성하기 :)

저는 API 인가를 위해, 특정한 데이터를 미리 약속한 API_KEY로 hash하는 로직을 사용했었습니다!

// Pre-Request script에, 암호화를 위한 함수를 정의합니다.
function apiKeyHash(target) {
  // Postman의 Environment Variables에 미리 등록된, API_KEY를 조회합니다.
  const apiKey = pm.environment.get("API_KEY");
  
  const encrypted = CryptoJS.HmacSHA256(target, apiKey);

  return hmac.toString(CryptoJS.enc.Hex);
}

// 이하가, 실제 값을 요청에 넣어주는 부분입니다!
const TARGET_MESSAGE = "SAMPLE_TARGET_MSG";

// 위에서 정의한 함수로 메시지를 hash합니다.
const hash = apiKeyHash(TARGET_MESSAGE);

// secret이라는 key로, 값을 headers에 담아 요청에 포함합니다! 
pm.request.headers.add({
    key: 'secret',
    value:hash
});

cf. pm object ?

[ 출처 : Postman Learning Center - Postman Javascript Reference ]

The Postman JavaScript API functionality enables you to programmatically access and alter request and response data and variables using the pm object.
...
...
The pm object provides methods for accessing global, collection, and environment variables specifically
...

→ 요청 / 응답 데이터에 접근할 수 있게 해주는 객체!
→ 여러 scope의 변수에 접근 가능!

맺음말

Pre-Request Script를 통해, 요청 전송시에 불필요하게 반복되는 세팅을 줄이고 편의성을 높일 수 있었습니다!

저는 요청 headers의 설정에 한정적으로 사용했지만,
테스트 시에 여러 가지 반복되는 작업을 줄여줄 수 있는 재밌는 기능인 것 같습니다! :)

혹 API 테스트 시에 반복적으로 요구되는 번거로운 작업이 있다면, Pre-request Script 활용을 고려해 보셔도 좋을 것 같습니다! :D

profile
주니어 백엔드 개발자입니다! 조용한 시간에 읽고 쓰는 것을 좋아합니다 :)

0개의 댓글