ย้ายไปใช้ที่อยู่ API เฉพาะ
ระบบที่เชื่อมต่อรุ่นก่อนเรียก API บนที่อยู่หลักของ Sursa ซึ่งเป็นที่อยู่ที่ผู้คนเปิดในเบราว์เซอร์ เช่น https://app.sursa.com/v1/… ตอนนี้ API มีที่อยู่ของตัวเองด้วย คือ https://api.sursa.com ในคลาวด์ หรือ https://api.<your domain> ในระบบที่ติดตั้งเอง ที่อยู่นี้สร้างมาเพื่อระบบที่เชื่อมต่อโดยเฉพาะ ขยายกำลังได้ด้วยเซิร์ฟเวอร์หลายเครื่องหลังตัวกระจายโหลด และให้บริการเฉพาะ API เท่านั้น
คุณไม่จำเป็นต้องย้าย ที่อยู่หลักยังให้บริการ /v1 สำหรับระบบที่เชื่อมต่ออยู่แล้วต่อไป โดยไม่มีวันสิ้นสุดและไม่มีการเปลี่ยนเส้นทาง ย้ายเมื่อสะดวกเพื่อรับประโยชน์ของที่อยู่ API เฉพาะ และใช้ที่อยู่นี้กับระบบที่เชื่อมต่อใหม่ทุกระบบ
สิ่งที่คงเดิม
- พาธ พารามิเตอร์ ฟิลด์ รหัสข้อผิดพลาด และอีเวนต์
GET /v1/cardsเป็นคำขอเดียวกันบนทั้งสองที่อยู่ - คีย์ API คีย์
kb_และkbsrc_ชุดเดิมใช้ได้บนทั้งสองที่อยู่ โดยมีบทบาท ขอบเขตสิทธิ์ และโปรไฟล์ข้อมูลเหมือนเดิม - คีย์ป้องกันการทำซ้ำ ขีดจำกัดอัตราการเรียก และโควตา คำขอบนทั้งสองที่อยู่นับรวมในโควตาเดียวกันขององค์กร
- เว็บฮุก การส่ง ลายเซ็น และข้อมูลลับไม่ขึ้นอยู่กับที่อยู่ที่คุณเรียก
- ลิงก์ในการตอบกลับ
doc_urlของข้อผิดพลาดชี้ไปยังพอร์ทัลนี้ และเฮดเดอร์Linkของหน้ารายการชี้ไปยังที่อยู่ API เฉพาะ ไม่ว่าคุณจะเรียกที่อยู่ใด
สิ่งที่ต่างไปบนที่อยู่ API เฉพาะ
| บนที่อยู่หลัก | บนที่อยู่ API เฉพาะ |
|---|---|
| ทุกเอนด์พอยต์ของเว็บแอปพลิเคชัน รวมถึงเอนด์พอยต์ภายใน | เฉพาะเอนด์พอยต์ใน เอกสารอ้างอิง API สาธารณะ พาธอื่นทั้งหมดจะตอบกลับ 404 พร้อมรหัส api.not_found |
คีย์ใน X-API-Key หรือ Authorization หรือคุกกี้เซสชันของเบราว์เซอร์ | ใช้คีย์หรือโทเค็นเข้าถึง OAuth ควรส่งใน Authorization: Bearer ระบบไม่สนใจคุกกี้ |
GET /auth/me | GET /v1/me พาธภายใต้ /auth/ ไม่ได้ให้บริการ |
| โหมด “View as” (ดูในมุมมองของผู้อื่น) ผ่านคุกกี้ | เฮดเดอร์ X-View-As สำหรับคีย์ที่มีบทบาท admin |
| เซิร์ฟเวอร์เครื่องเดียว หรือชุดเซิร์ฟเวอร์ตายตัว | เซิร์ฟเวอร์หลายเครื่องหลังตัวกระจายโหลด |
แถวสุดท้ายมีผลเพียงกรณีเดียว คือคำตอบแบบสตรีมของ POST /v1/chat สตรีมที่ขาดจะไล่ต่อจาก Last-Event-ID ได้เฉพาะบนเซิร์ฟเวอร์ที่กำลังเขียนคำตอบนั้น หากระบบที่เชื่อมต่อทำต่อจากสตรีมที่ขาด ให้กำหนด request_id ให้ทุกคำถาม เพื่อให้การลองใหม่บนเซิร์ฟเวอร์อื่นได้รับคำตอบที่บันทึกไว้แทนคำตอบใหม่ ดู ทำต่อจากสตรีมที่ขาด
ก่อนย้าย
ตรวจว่าทุกการเรียกเป็น API สาธารณะ รวบรวมพาธที่ระบบที่เชื่อมต่อเรียกใช้ แล้วค้นหาแต่ละพาธใน เอกสารอ้างอิง API หรือเทียบกับข้อกำหนดของที่อยู่ใหม่:
curl -s https://api.sursa.com/openapi.json \
| jq -r '.paths | to_entries[] | .key as $p | .value | keys[] | ascii_upcase + " " + $p' \
| sort > public-operations.txtพาธที่ไม่มีในเอกสารอ้างอิงสาธารณะเป็นของเว็บแอปพลิเคชัน พาธนั้นยังใช้ได้บนที่อยู่หลัก แต่ไม่ได้ให้บริการบนที่อยู่ API เฉพาะ และโครงสร้างของพาธนั้นไม่ใช่สิ่งที่รับประกันต่อสาธารณะ ให้แทนที่ด้วยเอนด์พอยต์สาธารณะ หรือคงส่วนนั้นของระบบที่เชื่อมต่อไว้บนที่อยู่หลัก แล้วแจ้งผู้ประสานงานของคุณที่ Sursa ว่าคุณต้องการอะไร
ตรวจวิธียืนยันตัวตน หากระบบที่เชื่อมต่อลงชื่อเข้าใช้ด้วยรหัสผ่านของผู้ใช้และคุกกี้เซสชัน ให้เปลี่ยนไปใช้ คีย์ API ก่อน หากส่ง X-API-Key แนะนำให้เปลี่ยนเป็น Authorization: Bearer แต่ไม่บังคับ
ตรวจเครือข่าย อนุญาต HTTPS ขาออกไปยังชื่อโฮสต์ใหม่ในไฟร์วอลล์และพร็อกซีของคุณ
ย้ายทีละขั้นตอน
-
ทำให้ URL ฐานเป็นค่าที่ตั้งค่าได้ ในระบบที่เชื่อมต่อ หากยังไม่ได้ทำ
-
ลองที่อยู่ใหม่ ด้วยคำขออ่าน:
curl https://api.example.com/v1/me -H "Authorization: Bearer $SURSA_API_KEY" -
รันชุดทดสอบ ของระบบที่เชื่อมต่อกับที่อยู่ใหม่ โดยใช้คีย์ทดสอบและคอลเลกชันทดสอบ
-
สลับทราฟฟิกบางส่วน เช่น เวิร์กเกอร์ตัวเดียวหรือสภาพแวดล้อมเดียว แล้วเฝ้าดู
404 api.not_found401และ5xxในล็อก ทุกการตอบกลับมีX-Request-Idให้เก็บค่านี้ไว้กับล็อกของคุณ -
สลับส่วนที่เหลือ เก็บ URL ฐานเดิมไว้ในการตั้งค่าสักระยะ เพื่อให้สลับกลับได้ภายในไม่กี่วินาที
สิ่งที่ควรตรวจหลังย้าย
GET /v1/healthบนที่อยู่ใหม่ส่งคืนversionเดียวกับบนที่อยู่เดิม- การตอบกลับมีเฮดเดอร์
RateLimitหากระบบที่เชื่อมต่อชะลอตัวเองตามX-RateLimit-*ก็ทำต่อไปได้ เพราะระบบส่งทั้งสองชุด ดู ขีดจำกัดอัตราการเรียกและโควตา - หากระบบที่เชื่อมต่อทำงานในเบราว์เซอร์ ก็ไม่ต้องใช้พร็อกซีของคุณเองสำหรับ CORS อีกต่อไป เพราะที่อยู่ API เฉพาะอนุญาตคำขอจากทุกออริจินโดยไม่ใช้คุกกี้