Saya punya REST API yang untuk beberapa entpoinds seperti DELETE, POST atau PUT saya punya beberapa aturan validasi yang bisa mengembalikan kesalahan.
Sekarang saya membutuhkan jenis kesalahan baru seperti kesalahan yang tidak kritis, bahwa kesalahan tersebut seharusnya gagal dengan cara biasa, tetapi harus dilakukan jika ada bendera "peringatan penekanan" yang dikirim. Pengguna seperti itu dapat ditanya: "Apakah Anda yakin ingin mengubah status ini, Anda belum selesai"
Pertanyaan : apakah ada praktik terbaik untuk jenis kesalahan ini?
Pertanyaan sekunder :
- Apakah ada semantik HTTP untuk perilaku yang dapat saya pengguna?
- apakah saya masih mengikuti ide REST (bagi saya kelihatannya saya lakukan) - saya tetap stateless
rm /file
"memperingatkan" file dibaca hanya saat menghapus saja.409 CONFLICT
respons peringatan. Dengan cara ini, klien diinstruksikan untuk memaksa panggilan dengan titik akhir dan badan yang sama dengan parameter exttra "force = 1"Jawaban:
Tidak ada kode hasil peringatan di http, Anda bisa mengembalikan kesuksesan (200) atau kesalahan (400, 500). Satu-satunya hal yang saya ketahui yang dapat dianalogikan dengan apa yang Anda inginkan adalah sesuatu seperti kode 401 'tidak sah' - yang merupakan kegagalan total, tetapi menyebabkan sebagian besar klien secara otomatis mencoba kembali koneksi dengan kredensial.
Untuk REST API, Anda perlu memberi tahu server status permintaan dan cara menangani hasilnya - Anda tidak dapat mengirim PUT dan mengharapkan kesalahan jika klien belum selesai, atau berhasil jika sudah - server perlu mengetahui hal ini informasi untuk mengirim kembali kode hasil yang tepat.
Jadi Anda dapat mengirim bendera 'suppress warnings' dengan permintaan Anda, jika tidak disetel server akan mengembalikan kode kesalahan 409 (atau serupa), dan jika diatur, kembalikan kode 200 sebagai gantinya. Pengguna tidak dapat ditanya 'apakah Anda ingin mengubah status ini' setelah perubahan status dikirim.
Anda dapat membuat permintaan ke server untuk menanyakan apakah pengguna dapat mengubah status saja dan mengikuti dengan permintaan yang sesuai setelah itu.
sumber
Jika Anda ingin mengizinkan pengguna untuk mengganti penanganan kesalahan normal Anda, Anda dapat mempertimbangkan mengembalikan status 200 SUKSES dengan informasi tambahan di header HTTP yang diperluas. Misalnya, Anda bisa kembali
Ini akan memberikan kode sisi klien Anda informasi yang diperlukan untuk memperingatkan pengguna atau mengambil tindakan korektif sendiri.
sumber