"ปัญหา" เช่นนั้นอยู่บนฝั่งเซิร์ฟเวอร์: ไคลเอนต์ได้ทำการร้องขอที่มีรูปแบบที่ดี แต่เซิร์ฟเวอร์ไม่สามารถตอบสนองได้ ดังนั้นฉันอยากจะ "เซิร์ฟเวอร์ผิดพลาด" รหัสสถานะ 5xx
Quoth RFC 7231 (มาตรฐาน HTTP ปัจจุบันเน้นการเพิ่ม):
รหัสสถานะคลาส 5xx (ข้อผิดพลาดของเซิร์ฟเวอร์) บ่งชี้ว่าเซิร์ฟเวอร์ทราบว่ามีข้อผิดพลาดหรือไม่สามารถดำเนินการตามวิธีที่ร้องขอได้ ยกเว้นเมื่อตอบสนองต่อคำขอ HEAD เซิร์ฟเวอร์ SHOULD จะส่งตัวแทนที่มีคำอธิบายเกี่ยวกับสถานการณ์ข้อผิดพลาดและไม่ว่าจะเป็นเงื่อนไขชั่วคราวหรือถาวร
บันทึก
- "ผิดพลาดหรือไม่สามารถดำเนินการตามคำขอ": แม้จะมีชื่อเรื่องของ "ข้อผิดพลาดของเซิร์ฟเวอร์" แต่ไม่ได้เกิดจากข้อผิดพลาดของเซิร์ฟเวอร์
- " ชั่วคราวหรือถาวร": รหัสเหล่านี้เหมาะสำหรับทรัพยากรที่ไม่สามารถใช้งานได้ชั่วคราวเช่นคุณ
จากรหัสที่มีอยู่ฉันจะบอกว่า503 "การบริการไม่พร้อมใช้งาน"เหมาะสมที่สุด:
รหัสสถานะ 503 (ไม่พร้อมใช้งานบริการ) บ่งชี้ว่าเซิร์ฟเวอร์ไม่สามารถจัดการการร้องขอได้ในขณะนี้เนื่องจากการโอเวอร์โหลดชั่วคราวหรือการบำรุงรักษาตามกำหนดเวลาซึ่งน่าจะบรรเทาได้หลังจากการล่าช้าบางครั้ง เซิร์ฟเวอร์อาจส่งฟิลด์ส่วนหัวลองอีกครั้งหลังจาก ... เพื่อแนะนำระยะเวลาที่เหมาะสมสำหรับลูกค้าที่จะรอก่อนลองส่งคำขออีกครั้ง
บันทึก:
- "มีแนวโน้มที่จะบรรเทาลงหลังจากมีการล่าช้า": จริงสำหรับกรณีของคุณ
- "โอเวอร์โหลดชั่วคราว": ไม่เป็นความจริงสำหรับกรณีของคุณ แต่อาจเป็นที่ถกเถียงกันอยู่ว่าเซิร์ฟเวอร์ของคุณเร็วขึ้นมากการประมวลผลแบบแบตช์จะทำไปแล้วเมื่อไคลเอนต์ร้องขอดังนั้นจึงเป็น "โอเวอร์โหลด": ลูกค้าร้องขอทรัพยากรที่เร็วกว่าเซิร์ฟเวอร์ พวกเขามีอยู่
- การลองใหม่เหมาะสำหรับบริการของคุณดังนั้นการตอบกลับของคุณควรรวม
Retry-After
ค่าไว้ด้วย คุณสามารถระบุเป็นค่าเวลาดำเนินการโดยประมาณของการดำเนินการแบทช์ครั้งต่อไปหรือช่วงเวลาดำเนินการของกระบวนการแบทช์
การกำหนดรหัสสถานะ 5xx ของคุณเอง (เช่น 591) แม้ว่าได้รับอนุญาตจะมีความหมายที่ผิด:
ลูกค้าจะต้องเข้าใจชั้นเรียนของรหัสสถานะใด ๆ ตามที่ระบุไว้โดยหลักแรกและถือรหัสสถานะที่ไม่รู้จักว่าเทียบเท่ากับรหัสสถานะ x00 ของชั้นเรียนนั้น
ลูกค้าจะถือว่ารหัสสถานะของคุณเป็น500 "Internal Server Error"ซึ่งจะไม่ถูกต้อง