Sepertinya tidak ada standar.
Jawaban StackOverflow condong ke arah 410 GONE, tapi saya pikir 301 PINDAH PERMANEN lebih tepat.
Untuk membuat pilihan yang benar, kami harus melihat kasus spesifik Anda. Jika tujuan Anda adalah membuat semua panggilan ke API v1 gagal tanpa mengambil tindakan lebih lanjut, 410 GONE bekerja untuk itu. Jika Anda menginginkan kontinuitas, seperti mengarahkan ulang klien ke versi API Anda yang lebih baru di mana panggilan mereka dapat berhasil, 3XX berfungsi, tetapi mana yang Anda pilih? Saya pikir jika Anda mencoba untuk mematikan API v1, 301 PINDAH PERMANEN membantu menunjukkan bahwa lebih baik dari 303 MELIHAT LAINNYA karena 301 menyarankan bahwa semua permintaan di masa mendatang harus dilakukan ke url baru sedangkan 303 tidak menunjukkan apakah situasi ini atau tidak. permanen.
Saya akan merekomendasikan rekayasa API sedemikian rupa sehingga setiap versi tetap kompatibel ke belakang, sehingga 301 PINDAH SECARA PERMANEN akan secara transparan menjaga API Anda tetap hidup dan mutakhir setiap kali Anda menambahkan titik akhir baru untuk versi API baru. Saya pikir itulah yang Anda coba lakukan.
Kode Status HTTP
Kode status HTTP 302 pada awalnya terlalu luas dan dengan demikian menjadi salah diterapkan / digunakan, jadi 303 dan 307 dibuat untuk membedakan antara kasus penggunaan ganda 302. Beberapa API menggunakan 303 untuk tujuan lain.
301 PINDAHKAN SECARA PERMANEN - Kode status 301 (Dipindahkan Secara Permanen) menunjukkan bahwa sumber daya target telah diberi URI permanen baru dan setiap referensi di masa mendatang untuk sumber daya ini harus menggunakan salah satu URI terlampir.
302 DITEMUKAN - Kode status 302 (Ditemukan) menunjukkan bahwa sumber daya target sementara berada di bawah URI yang berbeda. Karena pengalihan mungkin kadang-kadang diubah, klien harus terus menggunakan URI permintaan efektif untuk permintaan di masa mendatang.
303 LIHAT LAINNYA - Respons 303 untuk permintaan GET menunjukkan bahwa server asal tidak memiliki representasi sumber daya target yang dapat ditransfer oleh server melalui HTTP. Namun, nilai bidang Lokasi merujuk pada sumber daya yang deskriptif dari sumber daya target, sehingga membuat permintaan pengambilan sumber daya lain dapat menghasilkan representasi yang berguna bagi penerima tanpa menyiratkan bahwa itu mewakili sumber daya target asli.
410 GONE - Kode status 410 (Hilang) menunjukkan bahwa akses ke sumber daya target tidak lagi tersedia di server asal dan bahwa kondisi ini cenderung permanen. Jika server asal tidak tahu, atau tidak memiliki fasilitas untuk menentukan, apakah kondisinya permanen atau tidak, kode status 404 (Tidak Ditemukan) harus digunakan sebagai gantinya.
Bagaimana API yang ada menangani ini?
Mungkin Anda dapat mengambil halaman dari API Youtube Google :
Ketika permintaan API gagal, YouTube akan mengembalikan kode respons HTTP 4xx atau 5xx yang secara umum mengidentifikasi kegagalan serta respons XML yang memberikan informasi lebih spesifik tentang kesalahan yang menyebabkan kegagalan tersebut. Untuk setiap kesalahan, respons XML mencakup elemen domain, elemen kode, dan mungkin elemen lokasi.
- API BigCommerce menggunakan 302 DITEMUKAN.
- Petunjuk API Atlassian REST mengisyaratkan 301 MOVED PERMANENTLY bersama dengan sub-kode yang menjelaskan kesalahan secara rinci. Ini mirip dengan pendekatan Youtube API.
Bacaan lebih lanjut: