รหัสข้อผิดพลาดและแนวทางการรีทราย

API รหัสข้อผิดพลาด รีทราย สถานะ HTTP
บทความนี้เหมาะสำหรับใคร
สำหรับนักพัฒนาที่ต้องการสร้างการจัดการข้อผิดพลาดของ API และลอจิกการรีทราย

โครงสร้างของเรสปอนส์ข้อผิดพลาด

{
  "error": {
    "code": "invalid_parameter",
    "message": "store_id is required",
    "param": "store_id",
    "request_id": "req_01HV6N..."
  }
}

request_id จำเป็นต้องใช้เมื่อติดต่อฝ่ายสนับสนุน กรุณาใส่ไว้ในบันทึกข้อผิดพลาดเสมอ

รายการรหัสสถานะ HTTP

รหัส ความหมาย รีทราย
200 OKสำเร็จ
201 Createdสร้างสำเร็จ
204 No Contentสำเร็จ (ไม่มีเนื้อหา)
400 Bad Requestพารามิเตอร์ไม่ถูกต้องไม่ได้ (ต้องแก้ไข)
401 Unauthorizedยืนยันตัวตนล้มเหลว1 ครั้งหลังต่ออายุโทเคน
403 Forbiddenสิทธิ์ไม่พอ・สโคปไม่พอไม่ได้
404 Not Foundไม่พบรีซอร์สไม่ได้
409 Conflictสถานะขัดแย้งแล้วแต่เงื่อนไข
410 Goneถูกยกเลิกแล้วไม่ได้
422 Unprocessableข้อผิดพลาดการตรวจสอบไม่ได้
429 Too Many Requestsการจำกัดอัตราหลัง Retry-After
500 Internal Errorข้อผิดพลาดของเซิร์ฟเวอร์ด้วย exponential backoff
502 Bad Gatewayข้อผิดพลาดต้นทางด้วย exponential backoff
503 Service Unavailableใช้งานไม่ได้ชั่วคราวด้วย exponential backoff
504 Gateway Timeoutหมดเวลาด้วย exponential backoff

รหัสข้อผิดพลาดหลัก

code การรับมือ
invalid_parameterตรวจสอบเนื้อหาของฟิลด์ param
missing_parameterเพิ่มพารามิเตอร์ที่จำเป็น
invalid_tokenต่ออายุโทเคน
expired_tokenต่ออายุด้วยรีเฟรชโทเคน
insufficient_scopeเพิ่มสโคปที่จำเป็นแล้วขออนุญาตใหม่
app_not_approvedต้องยื่นขอตรวจสอบสำหรับสโคปฝั่ง User
resource_not_foundตรวจสอบการมีอยู่ของ ID
duplicate_resourceอัปเดตรีซอร์สที่มีอยู่ หรือสร้างด้วย ID อื่น
rate_limitedรอ Retry-After วินาที
plan_limit_exceededอัปเกรดแพลน

แนวทางการรีทราย

เงื่อนไขที่รีทรายได้

  • สถานะ HTTP เป็น 429 หรือ 5xx
  • เน็ตเวิร์กไทม์เอาต์・ข้อผิดพลาดการเชื่อมต่อ
  • กรณี POST ให้ตั้ง Idempotency-Key เสมอ (เพื่อป้องกันการสร้างซ้ำ)

ระยะห่างการรีทราย (exponential backoff + jitter)

function retryDelay(attempt) {
  // 1, 2, 4, 8, 16 วินาที (สูงสุด 32 วินาที)
  const base = Math.min(Math.pow(2, attempt), 32);
  // jitter ±25% เพื่อเลี่ยงการเข้าถึงแบบกระจุกตัว
  const jitter = base * (Math.random() * 0.5 - 0.25);
  return (base + jitter) * 1000;
}

จำนวนรีทรายสูงสุด

  • API ทั่วไป:สูงสุด 5 ครั้ง
  • การประมวลผลแบบแบตช์:สูงสุด 10 ครั้ง
  • เกิดจากการกระทำของผู้ใช้:สูงสุด 2 ครั้ง (ไม่ให้รอนานเกินไป)

กรณี 429 ให้ให้ความสำคัญกับเฮดเดอร์ Retry-After

HTTP/1.1 429 Too Many Requests
Retry-After: 30

→ รอ 30 วินาทีแล้วค่อยลองใหม่

กรณีที่ห้ามรีทราย

  • 4xx (ยกเว้น 429):เพราะปัญหาอยู่ที่ตัวรีเควสต์เอง ลองกี่ครั้งก็เหมือนเดิม
  • กรณี POST/PUT ที่ไม่ได้แนบ Idempotency-Key:เสี่ยงต่อการสร้างซ้ำ

คู่มือที่เกี่ยวข้อง

วันที่เผยแพร่: 2569-04-27 วันที่อัปเดต: 2569-07-05
このトピックについて
開発者API
機能の詳細を見る
แท็ก
API (22) OAuth (15) Android (10) iOS (9) Webhook (8) api (7) oauth (5) getting-started (4) การลงทะเบียนแอป (4) การแก้ปัญหา (4)
บทความที่เกี่ยวข้อง