ดูเหมือนจะไม่ได้มาตรฐาน
StackOverflow ตอบสนองต่อ 410 GONE แต่ฉันคิดว่า 301 MOVED อย่างต่อเนื่องเหมาะสมกว่า
เพื่อให้ทางเลือกที่ถูกต้องเราต้องดูกรณีเฉพาะของคุณ หากเป้าหมายของคุณคือการโทรทั้งหมดไปยัง API v1 ล้มเหลวโดยไม่ต้องดำเนินการใด ๆ อีก 410 GONE สามารถใช้งานได้ หากคุณต้องการความต่อเนื่องเช่นการเปลี่ยนเส้นทางไคลเอ็นต์ไปยัง API รุ่นใหม่ที่ซึ่งการโทรของพวกเขาอาจประสบความสำเร็จ 3XX ใช้งานได้ แต่คุณเลือกแบบไหน? ฉันคิดว่าถ้าคุณกำลังพยายามปิด API v1, 301 MOVED จะช่วยระบุว่าดีกว่า 303 SEE OTHER เพราะ 301 แนะนำว่าคำขอในอนาคตทั้งหมดควรทำกับ URL ใหม่ในขณะที่ 303 ไม่ได้ระบุว่าสถานการณ์นี้เป็นหรือไม่ ถาวร.
ฉันขอแนะนำวิศวกรรม API ในลักษณะที่แต่ละรุ่นยังคงใช้งานได้ย้อนหลังดังนั้น 301 ที่ย้ายมาอย่างต่อเนื่องจะช่วยให้ API ของคุณโปร่งใสและเป็นปัจจุบันเสมอเมื่อใดก็ตามที่คุณเพิ่มจุดปลายใหม่สำหรับ API รุ่นใหม่ ฉันคิดว่านั่นคือสิ่งที่คุณกำลังพยายามทำอยู่แล้ว
รหัสสถานะ HTTP
รหัสสถานะ HTTP 302 นั้นกว้างเกินไป แต่เดิมและมีการนำไปใช้ / ใช้อย่างไม่ถูกต้องดังนั้น 303 และ 307 จึงถูกสร้างขึ้นเพื่อแยกความแตกต่างระหว่างกรณีใช้งานคู่ของ 302 API บางตัวใช้ 303 เพื่อจุดประสงค์อื่น
301 ย้ายอย่างต่อเนื่อง - รหัสสถานะ 301 (ย้ายอย่างถาวร) บ่งชี้ว่าทรัพยากรเป้าหมายได้รับการกำหนด URI ถาวรใหม่และการอ้างอิงในอนาคตใด ๆ กับทรัพยากรนี้ควรใช้หนึ่งใน URI ที่แนบมา
302 FOUND - รหัสสถานะ 302 (พบ) ระบุว่าทรัพยากรเป้าหมายอยู่ภายใต้ URI อื่นชั่วคราว เนื่องจากการเปลี่ยนเส้นทางอาจมีการเปลี่ยนแปลงในบางโอกาสลูกค้าควรใช้ URI คำขอที่มีประสิทธิภาพต่อไปสำหรับคำขอในอนาคต
303 SEE OTHER - การตอบสนอง 303 ต่อคำขอ GET บ่งชี้ว่าเซิร์ฟเวอร์ต้นทางไม่มีการแสดงทรัพยากรเป้าหมายที่สามารถถ่ายโอนโดยเซิร์ฟเวอร์ผ่าน HTTP อย่างไรก็ตามค่าฟิลด์ Location หมายถึงทรัพยากรที่เป็นคำอธิบายของทรัพยากรเป้าหมายเช่นการร้องขอการดึงข้อมูลบนทรัพยากรอื่นนั้นอาจส่งผลให้เกิดการแสดงที่เป็นประโยชน์ต่อผู้รับโดยไม่ได้หมายความว่ามันหมายถึงทรัพยากรเป้าหมายดั้งเดิม
410 GONE - รหัสสถานะ 410 (หายไป) บ่งชี้ว่าการเข้าถึงทรัพยากรเป้าหมายไม่สามารถใช้งานได้ที่เซิร์ฟเวอร์ต้นทางอีกต่อไปและเงื่อนไขนี้น่าจะเป็นแบบถาวร หากเซิร์ฟเวอร์ต้นทางไม่รู้หรือไม่มีสิ่งอำนวยความสะดวกในการตรวจสอบว่าเงื่อนไขนั้นถาวรหรือไม่ควรใช้รหัสสถานะ 404 (ไม่พบ) แทน
API ที่มีอยู่จะจัดการสิ่งนี้ได้อย่างไร
บางทีคุณสามารถรับหน้าจากYoutube APIของ Google :
เมื่อคำขอ API ล้มเหลว YouTube จะส่งคืนรหัสตอบกลับ HTTP 4xx หรือ 5xx ที่ระบุความล้มเหลวโดยทั่วไปรวมถึงการตอบกลับ XML ที่ให้ข้อมูลเฉพาะเพิ่มเติมเกี่ยวกับข้อผิดพลาดที่ทำให้เกิดความล้มเหลว สำหรับข้อผิดพลาดแต่ละครั้งการตอบสนอง XML รวมองค์ประกอบโดเมนองค์ประกอบรหัสและองค์ประกอบตำแหน่ง
อ่านเพิ่มเติม: