Saya sedikit di persimpangan jalan dengan beberapa desain API untuk klien (JS di browser) untuk berbicara dengan server. Kami menggunakan Konflik HTTP 409 untuk mewakili kegagalan tindakan karena kunci pengaman berlaku. Kunci satefy mencegah devs membuat perubahan secara tidak sengaja dalam sistem produksi pelanggan kami. Saya telah ditugaskan menangani 409s sedikit lebih anggun pada klien untuk menunjukkan mengapa panggilan API tertentu gagal.
Solusi saya adalah untuk membungkus penangan kegagalan dari setiap panggilan AJAX kami yang akan menampilkan pemberitahuan pada klien ketika sesuatu gagal karena 409 - ini semua baik-baik saja dan bekerja dengan baik bersama kesalahan 4XX dan 5XX lainnya yang menggunakan mekanisme yang sama.
Masalah telah muncul ketika salah satu penangan rute kami merespons dengan 409 ketika menemukan kesalahan logika bisnis - pembungkus AJAX saya melaporkan bahwa kunci pengaman aktif, sementara penangan kegagalan klien yang ada melaporkan apa (yang menurutnya) masalah berdasarkan pada tubuh tanggapan. Solusi sederhana adalah mengubah respons pawang atau kode status yang kami gunakan untuk mewakili kunci pengaman.
Yang membawa saya ke persimpangan jalan: haruskah kode status HTTP bahkan digunakan untuk mewakili kesalahan logika bisnis? Pertanyaan ini membahas masalah yang sama yang saya hadapi tetapi tidak mendapatkan banyak daya tarik. Seperti yang disarankan dalam jawaban yang ditautkan, saya condong ke arah menggunakan HTTP 200 OK dengan badan yang sesuai untuk mewakili kegagalan dalam logika bisnis.
Adakah yang punya pendapat kuat di sini? Adakah yang bisa meyakinkan saya bahwa ini adalah cara yang salah untuk menggambarkan kegagalan?
400 Bad Request
sebagai selimut, kode HTTP tampaknya paling baik untuk menutupi kesalahan logika bisnis sebagai kelas.
400 Bad Request
ketika data hilang atau tidak dapat dibaca / diuraikan. Yaitu data permintaan itu sendiri buruk dalam beberapa hal.
400 Bad Request
. Alasan pemisahan ini adalah karena sistem di masa depan, pengembang atau pembaca dokumen mungkin bingung dengan penyimpangan Anda dari standar di seluruh dunia.