ฉันกำลังอยู่ระหว่างทางแยกที่มีการออกแบบ API บางอย่างสำหรับลูกค้า (JS ในเบราว์เซอร์) เพื่อพูดคุยกับเซิร์ฟเวอร์ เราใช้ HTTP 409 Conflict เพื่อแสดงถึงความล้มเหลวของการกระทำเนื่องจากมีการล็อคเพื่อความปลอดภัย ล็อค satefy ป้องกันไม่ให้ devs ทำการเปลี่ยนแปลงในระบบการผลิตของลูกค้าโดยไม่ได้ตั้งใจ ฉันได้รับมอบหมายให้จัดการ 409 บิตให้กับลูกค้าอย่างอ่อนโยนยิ่งขึ้นเพื่อระบุว่าเหตุใดการเรียก API เฉพาะจึงล้มเหลว
โซลูชันของฉันคือการตัดตัวจัดการความล้มเหลวของการโทร AJAX ใด ๆ ของเราซึ่งจะแสดงการแจ้งเตือนลูกค้าเมื่อมีบางอย่างล้มเหลวเนื่องจาก 409 - ทั้งหมดนี้ใช้ได้และทำงานได้ดีพร้อมกับข้อผิดพลาด 4XX และ 5XX อื่น ๆ ที่ใช้กลไกเดียวกัน
มีปัญหาเกิดขึ้นที่หนึ่งในตัวจัดการเส้นทางของเราตอบสนองกับ 409s เมื่อพบข้อผิดพลาดทางธุรกิจตรรกะ - AJAX wrapper ของฉันรายงานว่าล็อคความปลอดภัยอยู่ในขณะที่ลูกค้าจัดการความล้มเหลวที่มีอยู่รายงานสิ่งที่มันคิดว่ามันขึ้นอยู่กับร่างกาย ของการตอบสนอง วิธีแก้ปัญหาง่ายๆคือเปลี่ยนการตอบสนองของผู้จัดการหรือรหัสสถานะที่เราใช้เพื่อเป็นตัวแทนของล็อคความปลอดภัย
ซึ่งนำฉันไปสู่ทางแยกของฉัน: ควรใช้รหัสสถานะ HTTP เพื่อแสดงถึงข้อผิดพลาดทางตรรกะทางธุรกิจหรือไม่ คำถามนี้เน้นปัญหาเดียวกันกับที่ฉันเผชิญ แต่ก็ไม่ได้รับแรงฉุดมากนัก ตามที่แนะนำในคำตอบที่เชื่อมโยงกันฉันกำลังโน้มตัวไปใช้ HTTP 200 OK กับเนื้อหาที่เหมาะสมเพื่อแสดงถึงความล้มเหลวภายในตรรกะทางธุรกิจ
ใครบ้างมีความคิดเห็นที่แข็งแกร่งที่นี่? ทุกคนสามารถโน้มน้าวฉันได้ไหมว่านี่เป็นวิธีที่ผิดในการแสดงถึงความล้มเหลว?
400 Bad Request
ในฐานะที่เป็นรหัสผ้าห่ม HTTP ที่ดีที่สุดที่จะครอบคลุมข้อผิดพลาดตรรกะทางธุรกิจเป็นชั้นเรียน
400 Bad Request
เมื่อข้อมูลหายไปหรือไม่สามารถอ่าน / แยกวิเคราะห์ได้ นั่นคือข้อมูลคำขอของตัวเองไม่ดีอย่างใด
400 Bad Request
รหัสสถานะเหมาะสำหรับการกลับมาตรวจสอบหรือตรรกะทางธุรกิจที่จะเป็นข้อผิดพลาด สาเหตุของการแยกนี้เป็นเพราะระบบในอนาคต devs หรือผู้อ่านเอกสารอาจสับสนโดยการเบี่ยงเบนของมาตรฐานทั่วโลก