Oke jadi ini bukan tentang idempotensi. Tapi kemudian pertanyaan lanjutannya mungkin, bagaimana jika kita masih memilih untuk menggunakan 204 dalam DELETE berikutnya? Apakah ini oke?
Pertanyaan bagus. Motivasinya dapat dimengerti: untuk memungkinkan klien tetap mencapai hasil yang diinginkan, tanpa mengkhawatirkan penanganan kesalahan. Saya akan mengatakan, mengembalikan 204 dalam DELETE berikutnya, adalah "kebohongan putih" sisi server yang sebagian besar tidak berbahaya, yang sisi klien tidak akan segera membedakannya. Itulah mengapa ada ~ 25% orang melakukan itu di alam liar dan tampaknya masih berhasil. Ingatlah bahwa, kebohongan semacam itu dapat dianggap aneh secara semantik, karena GET /non-exist
mengembalikan 404 tetapi DELETE /non-exist
memberikan 204, pada saat itu klien akan mengetahui bahwa layanan Anda tidak sepenuhnya sesuai dengan bagian 6.5.4 404 Not Found .
Namun saya ingin menunjukkan bahwa, cara yang dimaksudkan yang ditunjukkan oleh RFC 7231, yaitu mengembalikan 404 pada DELETE berikutnya, seharusnya tidak menjadi masalah sejak awal. 3x lebih banyak pengembang memilih untuk melakukan itu, dan apakah Anda pernah mendengar insiden besar atau keluhan yang disebabkan oleh klien yang tidak dapat menangani 404? Agaknya, tidak, dan itu karena, klien yang layak yang mengimplementasikan HTTP DELETE (atau metode HTTP apa pun, dalam hal ini), tidak akan secara membabi buta berasumsi bahwa hasilnya akan selalu berhasil 2xx. Dan kemudian, setelah pengembang mulai mempertimbangkan penanganan kesalahan, 404 Not Found akan menjadi salah satu kesalahan pertama yang terlintas dalam pikiran. Pada titik itu, dia mungkin akan menarik kesimpulan bahwa, secara semantik aman untuk operasi HTTP DELETE mengabaikan kesalahan 404. Dan mereka melakukannya.