Saya merancang API yang tenang dan dihadapkan dengan masalah judul, disajikan kembali untuk kejelasan:
Haruskah saya gagal dengan cepat jika klien mengirim parameter yang tidak dikenal? Sebagai contoh,
http://example.com/api/foo?bar=true&paula=bean
Di atas, bar
adalah parameter yang valid tetapi paula
tidak ditentukan oleh API. Haruskah saya
- Peringatkan klien kesalahan
- Gagal cepat
- Abaikan itu
Jika saya memperingatkan klien, saya hanya bisa mengeluarkan peringatan untuk parameter pertama, karena mereka bisa mengirimkan jumlah mereka yang hampir tak terbatas, dan server mungkin memiliki hal-hal yang lebih baik untuk dilakukan. Demikian pula, ketika gagal, itu hanya akan menentukan param tidak valid pertama sebagai masalah.
Saya lebih suka kegagalan daripada mengeluarkan peringatan untuk memaksa programmer untuk mengambil tindakan, karena mereka mungkin mengabaikan masalah dan terus membuang-buang sumber daya, atau berakhir dengan mengkultivasi kargo sendiri secara tidak sengaja. Tidak melakukan hal yang lebih buruk dalam hal itu.
Apakah argumen saya masuk akal? Apakah ada praktik yang diterima tentang hal-hal seperti itu?
sumber
api/v1
dll. Akan mengatasi hal itu, tetapi masih tidak memungkinkan untuk pembaruan tambahan. +1Jawaban:
Menurut pendapat saya, Anda harus mengembalikan status Permintaan Tidak Valid, sehingga klien tahu bahwa apa yang ia coba lakukan tidak valid. Pendapat saya tentang ini dipengaruhi oleh konsep bahwa RESTful APIs dapat ditemukan . Jika Anda memberikan informasi yang memadai di muka, maka klien tidak pernah mencoba membuat permintaan yang tidak valid untuk memulai. Jika ya, maka ada sesuatu yang salah dalam kode klien dan gagal dengan cepat akan mengingatkan bug kedua ini. Tentu saja, itu pendekatan yang sangat murni dan mungkin tidak disarankan jika API Anda tidak dapat ditemukan.
Pendekatan yang lebih pragmatis mungkin untuk mengabaikan param yang tidak valid, tetapi apa pun yang Anda lakukan, pastikan untuk mendokumentasikan perilaku dengan baik.
sumber
Jika Anda melakukan API publik (atau api yang akan digunakan oleh tim lain), saya akan merekomendasikan galat balik seperti yang disarankan @RubberDuck.
Jika api Anda akan dikonsumsi hanya di dalam tim Anda (atau hanya oleh Anda sendiri), mungkin lebih mudah untuk mengabaikan bidang tambahan (mis. Membutuhkan lebih sedikit kode dan lebih mudah dilakukan).
sumber