Saya bekerja dengan REST API yang berada di server yang menangani data untuk banyak perangkat IoT.
Tugas saya adalah meminta server menggunakan API untuk mengumpulkan informasi kinerja spesifik tentang perangkat tersebut.
Dalam satu contoh, saya mendapatkan daftar perangkat yang tersedia dan pengidentifikasi yang sesuai, kemudian meminta server untuk detail lebih lanjut menggunakan pengidentifikasi tersebut (GUID).
Server mengembalikan 500 Internal Server Error
permintaan untuk salah satu ID tersebut. Dalam aplikasi saya, pengecualian dilemparkan dan saya tidak melihat detail tentang kesalahan tersebut. Jika saya memeriksa respons lebih dekat dengan Postman , saya dapat melihat bahwa server mengembalikan JSON di dalam tubuh yang berisi:
errorMessage: "This ID does not exist"
.
Abaikan fakta bahwa server memberikan ID untuk memulai - itu masalah tersendiri bagi pengembang.
Haruskah REST API mengembalikan a 500 Internal Server Error
untuk melaporkan bahwa kueri merujuk objek yang tidak ada? Menurut pendapat saya, kode respons HTTP harus merujuk secara ketat ke status panggilan REST, alih-alih ke mekanisme internal API. Saya harapkan 200 OK
jawaban dengan yang berisi kesalahan dan deskripsi, yang akan menjadi hak milik API yang bersangkutan.
Terjadi pada saya bahwa ada perbedaan potensial dalam harapan tergantung pada bagaimana panggilan REST terstruktur.
Pertimbangkan contoh-contoh ini:
http://example.com/restapi/deviceinfo?id=123
http://example.com/restapi/device/123/info
Dalam kasus pertama, ID perangkat dilewatkan sebagai variabel GET. A 404 atau 500 akan menunjukkan bahwa path ( /restapi/deviceinfo
) tidak ditemukan atau mengakibatkan kesalahan server.
Dalam kasus kedua, ID perangkat adalah bagian dari URL. Saya akan lebih memahami tentang 404 Not Found
, tetapi masih bisa berdebat berdasarkan bagian mana dari jalur ditafsirkan sebagai variabel versus titik akhir.