ในโลกของการพัฒนาซอฟต์แวร์ยุคใหม่ ข้อมูลไม่ได้จำกัดอยู่แค่ข้อความหรือตัวเลข JSON อีกต่อไป การส่งผ่านไฟล์ประเภทต่างๆ ไม่ว่าจะเป็นรูปภาพ เอกสาร หรือสตรีมข้อมูลดิบ (Binary Stream) ได้กลายเป็นส่วนสำคัญที่ขาดไม่ได้ในการทำงานของระบบ API ที่ทันสมัย โดยเฉพาะอย่างยิ่งเมื่อระบบ Back-end ของเราใช้ PostgreSQL ซึ่งมีความสามารถในการจัดการข้อมูลไบนารีผ่านประเภทข้อมูล BYTEA
การทำความเข้าใจ Payload สำหรับ PostgreSQL
เมื่อเราต้องออกแบบ API Endpoint เพื่อรับไฟล์หรือสตรีมข้อมูลเข้าสู่ PostgreSQL เราจะไม่สามารถใช้รูปแบบ JSON ธรรมดาได้ เนื่องจากข้อมูลไบนารี (Binary Data) ต้องถูกส่งผ่านกลไกที่เรียกว่า multipart/form-data
multipart/form-data คือมาตรฐานที่ช่วยให้เราสามารถรวมกันระหว่าง Key-Value Pairs (เช่น ID ผู้ใช้, คำอธิบาย) เข้ากับข้อมูลแบบ Binary ได้อย่างมีระเบียบ โดยแต่ละส่วนของ Payload จะถูกคั่นด้วย Boundary Delimiter เฉพาะตัว การทดสอบใน Postman จึงต้องจำลองโครงสร้างนี้ให้ถูกต้อง เพื่อให้ API Gateway สามารถส่งข้อมูลไปถึง PostgreSQL ได้อย่างสมบูรณ์
การจัดการ Binary Stream และ BYTEA ใน PostgreSQL
นอกจากไฟล์ที่มีโครงสร้างแล้ว การทดสอบยังขยายไปถึงการจัดการ binary stream ซึ่งหมายถึงการส่งข้อมูลดิบที่ไม่มีโครงสร้างไฟล์มาตรฐาน (เช่น ข้อมูลเซ็นเซอร์ หรือภาพถ่ายที่ส่งเป็นสตรีม) ในกรณีเหล่านี้ ข้อมูลจะถูกจัดเก็บใน PostgreSQL ด้วยประเภทข้อมูล BYTEA
ในการทดสอบด้วย Postman เราต้องกำหนด Body เป็น Binary และตั้งค่า Headers ให้ถูกต้อง เพื่อจำลองการส่งข้อมูลไบนารีดิบนี้ไปยัง Endpoint ที่ถูกออกแบบมาเพื่อรับข้อมูล BYTEA โดยเฉพาะ
ตัวอย่างการจำลองการรับไฟล์ใน PostgreSQL
สมมติว่าเรามี API Endpoint ที่รับไฟล์รูปภาพ (Binary Stream) เข้ามาเพื่อบันทึกในตาราง attachments ใน PostgreSQL การทดสอบใน Postman จะต้องส่งข้อมูลในรูปแบบที่ API Backend สามารถดึงข้อมูลไบนารีนี้ไปใช้คำสั่ง SQL ได้อย่างถูกต้อง:
SQL
-- ตัวอย่างการสร้างฟังก์ชันเพื่อรับและบันทึก Binary Data (BYTEA) จาก API Call<br>CREATE OR REPLACE FUNCTION upload_attachment(p_file_name TEXT, p_binary_data BYTEA) RETURNS UUID AS $$<br>BEGIN<br> INSERT INTO attachments (file_name, data) VALUES (p_file_name, p_binary_data)<br> RETURNING id;<br>END;$$ LANGUAGE plpgsql;<br><br>-- การเรียกใช้ฟังก์ชันนี้จะจำลองการรับข้อมูลไบนารีที่ส่งมาจาก Postman<br>SELECT upload_attachment('report.pdf', E'\xdeadbeef');
บทสรุปสำหรับสถาปนิกระบบ
การทดสอบการส่งไฟล์และสตรีมข้อมูลไบนารีด้วย Postman ไม่ได้เป็นเพียงแค่การกดปุ่ม ‘Send’ แต่เป็นการจำลองการทำงานของระบบที่ซับซ้อน ตั้งแต่การกำหนด Content-Type ที่ถูกต้อง ไปจนถึงการมั่นใจว่า Backend API ได้รับข้อมูลในรูปแบบที่ PostgreSQL สามารถประมวลผลและจัดเก็บในประเภทข้อมูล BYTEA ได้อย่างสมบูรณ์ การทำความเข้าใจกลไกเหล่านี้จะช่วยให้เราสร้างระบบ API ที่มีความเสถียรและรองรับข้อมูลที่หลากหลายได้อย่างแท้จริง