PlusMagi's Blog By Pitt Phunsanit Backend,Cloud Computing Postman Pre-request Scripts: การเขียน JavaScript เพื่อเจนค่า Dynamic Token หรือ Timestamp ก่อนยิง API

Postman Pre-request Scripts: การเขียน JavaScript เพื่อเจนค่า Dynamic Token หรือ Timestamp ก่อนยิง API

ในโลกของการพัฒนาซอฟต์แวร์สมัยใหม่ การทดสอบ API ไม่ได้เป็นเพียงแค่การส่งคำขอด้วยข้อมูลคงที่อีกต่อไป ด้วยข้อกำหนดด้านความปลอดภัยและประสิทธิภาพที่สูงขึ้นเรื่อย ๆ ทำให้ API ส่วนใหญ่ต้องอาศัยค่าพารามิเตอร์ที่มีความเปลี่ยนแปลงตลอดเวลา เช่น โทเคนเฉพาะกิจ (Ephemeral Tokens), ลายเซ็นดิจิทัล (Signatures) ที่ผูกกับเวลา, หรือรหัสยืนยันแบบครั้งเดียว (One-Time Passwords: OTPs) การจัดการข้อมูลเหล่านี้อย่างถูกต้องก่อนที่คำขอจะถูกส่งออกไปจึงเป็นหัวใจสำคัญของการทดสอบระบบให้สมบูรณ์แบบในระดับ Senior Architect

Postman Pre-request Scripts: กลไกการสร้างค่า Dynamic Data

Pre-request Script ใน Postman คือพื้นที่ที่อนุญาตให้เราเขียนโค้ด JavaScript เพื่อรันคำสั่งก่อนที่ HTTP Request จะถูกส่งออกไปจริง ๆ นี่คือจุดที่เราสามารถเข้าถึงและจัดการตัวแปรสภาพแวดล้อม (Environment Variables) หรือตัวแปร Global ได้อย่างเต็มรูปแบบ แนวคิดหลักคือการใช้สคริปต์นี้เพื่อ “เตรียม” ข้อมูลให้พร้อมสำหรับการเรียก API ครั้งถัดไปอย่างแม่นยำ ไม่ว่าจะเป็นการคำนวณค่า Hash, การสร้าง Timestamp ปัจจุบัน, หรือการจำลองกระบวนการ OAuth Flow ที่ซับซ้อน

หลักการทำงาน: การจัดการตัวแปรด้วย JavaScript

เมื่อเราเข้าใจกลไกนี้แล้ว เราจะสามารถเขียนโค้ด JavaScript เพื่อกำหนดค่าตัวแปรในรูปแบบที่ API ต้องการได้อย่างแม่นยำ ตัวอย่างเช่น หาก API ต้องการ Bearer Token ที่ต้องมีการผูกกับเวลาปัจจุบัน (Timestamp) หรือต้องการ Signature ที่ต้องรวมค่าของ Timestamp และ Client ID เข้าด้วยกัน เราสามารถใช้ JavaScript เพื่อคำนวณค่าเหล่านี้และบันทึกมันลงใน Environment Variable เพื่อให้ Request Header สามารถดึงค่าที่อัปเดตล่าสุดไปใช้ได้ทันที

ตัวอย่าง: การสร้าง Timestamp และ Dynamic Token

สมมติว่า API Endpoint ต้องการค่า x-timestamp ที่เป็น milliseconds นับจาก Epoch Time และต้องการสร้าง auth_token แบบง่าย ๆ ที่รวม Timestamp เข้าไปด้วย เราสามารถเขียนสคริปต์ดังนี้:

JavaScript

// 1. สร้าง Timestamp ปัจจุบัน (เป็นค่า Dynamic ที่เปลี่ยนแปลงทุกครั้ง) 
const currentTimestamp = Date.now();

// 2. กำหนดค่า Timestamp ให้กับ Environment Variable 
pm.environment.set("x-timestamp", currentTimestamp);

// 3. สร้าง Token จำลอง (รวม Timestamp และ Client ID) 
const clientId = pm.environment.get("client_id") || "default_client";
const dynamicToken = btoa("Bearer:".concat(clientId, ":", currentTimestamp));

// 4. บันทึก Token ลงใน Environment Variable เพื่อใช้ใน Header 
pm.environment.set("auth_token", dynamicToken);

เมื่อโค้ดนี้รันสำเร็จ ตัวแปร x-timestamp และ auth_token จะถูกอัปเดตด้วยค่าที่เปลี่ยนแปลงไปในทุกรอบการเรียก API ทำให้มั่นใจได้ว่าการทดสอบของเรามีความสมจริงและสอดคล้องกับข้อจำกัดด้านความปลอดภัยของระบบจริง

บทสรุป: การยกระดับการทดสอบ API ระดับมืออาชีพ

การใช้ Pre-request Scripts ไม่ได้เป็นเพียงแค่ฟีเจอร์เสริม แต่เป็นเครื่องมือสำคัญที่ยกระดับการทดสอบ API จากการทดสอบแบบพื้นฐานไปสู่การจำลองกระบวนการทางธุรกิจที่ซับซ้อน (Complex Workflow Simulation) ในฐานะ Senior Architect การเข้าใจการจัดการตัวแปรแบบ Dynamic Data ด้วย JavaScript ใน Postman จึงเป็นทักษะที่ขาดไม่ได้ในการรับประกันว่าระบบที่พัฒนาขึ้นมานั้นมีความปลอดภัยและทนทานต่อการเปลี่ยนแปลงของข้อมูลที่ต้องใช้ในการสื่อสารระหว่างบริการ (Microservices Communication) ได้อย่างสมบูรณ์