Idempotency — สร้างการจองอย่างปลอดภัย
เมื่อสร้างการจอง (POST /partner/v1/bookings) หากการเชื่อมต่อหลุดหรือ timeout
คุณอาจไม่แน่ใจว่าการจองถูกสร้างไปแล้วหรือยัง การส่งคำขอซ้ำโดยไม่ป้องกันอาจทำให้เกิด การจองซ้ำ
ป้องกันด้วยส่วนหัว Idempotency-Key — ค่าที่ไม่ซ้ำกันต่อหนึ่งการจองที่ตั้งใจสร้าง
วิธีใช้
curl -X POST "https://app.romnest.com/api/v1/partner/v1/bookings" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-2026-07-0001" \
-d '{ "roomTypeId": "...", "checkin": "2026-07-01", "checkout": "2026-07-03", "adults": 2,
"guest": { "firstName": "สมชาย", "lastName": "ใจดี", "email": "guest@example.com" } }'
พฤติกรรม
- ครั้งแรกที่ส่งคีย์หนึ่ง → ระบบสร้างการจองและจดจำคีย์นั้นไว้
- ส่งคำขอด้วย คีย์เดิมซ้ำ → ระบบจะคืน การจองเดิม กลับมา โดยไม่สร้างรายการใหม่
จึงปลอดภัยที่จะลองส่งซ้ำ (retry) เมื่อเจอ network error หรือ 5xx
ตราบใดที่ใช้ Idempotency-Key เดิม
แนวทางที่ดี
- สร้างคีย์ที่ไม่ซ้ำต่อหนึ่งคำสั่งจอง เช่น อ้างอิงเลขออเดอร์ในระบบของคุณ (
order-12345) - ใช้คีย์ ใหม่ สำหรับการจองใหม่จริงๆ เท่านั้น
- เก็บคีย์ไว้ฝั่งคุณ เพื่อใช้ค่าเดิมเมื่อต้อง retry