Selain jawaban @ Dherik.
URI adalah pengidentifikasi , jadi kita harus ingat bahwa ( /a/{id}/b
adalah pengidentifikasi). The URI ada artinya untuk WWW, dan begitu juga untuk klien HTTP.
404 adalah jawaban yang tepat . Intinya, server menjawab
Saya tidak menemukan sumber daya dengan id seperti itu. Sumber daya tidak ditemukan
1
Apakah sumber daya yang hilang adalah orang tua atau anak tidak masalah.
Kami, pengembang, melihat hierarki dan jalur di URI, tetapi klien HTTP tidak. Dengan kata lain, HTTP hanya dimaksudkan untuk ditafsirkan oleh klien HTTP tetapi tidak oleh manusia (devs, pengguna akhir, dll).
Jika ragu, jangan tanya kode apa yang masuk akal untuk Anda (manusia). Tanyakan, kode apa yang masuk akal untuk klien HTTP. Bagaimana Anda ingin klien HTTP berperilaku?
Mengapa? Karena beberapa kode status menyebabkan klien ini melakukan operasi tertentu. Misalnya, 302 . Kode ini biasanya membuat browser web untuk mengarahkan ulang ke lokasi tertentu (URI) yang diinformasikan dalam header respons.
Ini mungkin bukan kasus Anda, tetapi penting untuk diperhatikan. Pada akhirnya, kode status HTTP ditujukan ke klien HTTP. Tidak untuk aplikasi kita. Bukan untuk orang.
1: 409 jarang diimplementasikan sebagai kesalahan navigasi. Biasanya melibatkan pelaksanaan operasi jarak jauh (hapus, perbarui, baru, dll). Tetapi URI harus ada. Kalau tidak, 404 akan menang