Seberapa terpisahkah seharusnya RESTful API?

12

Saya belum pernah membuat API yang tenang sebelumnya dan saya bertanya-tanya bagaimana seharusnya diskrit itu?

Misalnya katakanlah saya memiliki pelanggan yang memiliki nama, alamat, nomor telepon, alamat email, bahasa, dll.

Apakah masuk akal bahwa ada cara untuk memperbarui setiap bidang individu (memperbarui alamat, memperbarui alamat email, dll), atau haruskah hanya ada satu pembaruan untuk seluruh pelanggan dan masing-masing bidang adalah opsional?

saturinine
sumber
3
Bagian mana dari REST yang Anda inginkan? Jika Anda hanya membutuhkan API sederhana yang tidak mengkhawatirkan standar, Anda dapat menanganinya seperti jawaban yang diterima thorsten müller. Jika Anda ingin REST nyata, Anda perlu mencari Roy Fielding (+ disertasi misalnya). Dia adalah penemu REST. Anda akan melihat bahwa misalnya gagasan bahwa sumber daya == sebuah tabel bukanlah kebenaran. Anda juga akan menemukan bahwa misalnya untuk pertanyaan Anda, metode HTTP PATCH cukup umum digunakan untuk memperbarui satu atau beberapa bidang. Di mana metode POST atau PUT (banyak perdebatan di sini) dapat digunakan untuk pembaruan lengkap pada sumber daya.
Luc Franken

Jawaban:

17

Anda memiliki satu tindakan pembaruan untuk sumber daya. Sebagai aturan praktis, tabel dalam basis data Anda akan menjadi sumber. Jadi, dalam contoh Anda, ada satu pengontrol untuk Pelanggan dengan satu tindakan pembaruan dan bidang adalah opsional sejauh mungkin.

Mungkin ada pengecualian untuk ini (misalnya jika Anda memperbarui kata sandi yang Anda harapkan kata sandi & konfirmasi kata sandi), tetapi ini berlaku untuk sebagian besar kasus.

Lebih mungkin bahwa pengecualian adalah pengontrol yang memiliki tindakan terbatas untuk beberapa sumber daya, seperti SessionsController yang hanya dapat dibuat dan dihancurkan. Sangat tidak mungkin Anda ingin memiliki tindakan untuk bidang tunggal.

Dalam contoh Anda satu hal dapat ditangani sebagai sumber daya sendiri dan itu adalah alamatnya. Jika Anda memiliki tabel untuk alamat, terutama jika akan ada lebih dari satu alamat per pelanggan (penagihan, pengiriman ...) ini dapat ditangani sebagai sumber daya bersarang. Tetapi sekali lagi satu tindakan pembaruan untuk seluruh sumber daya alamat.

thorsten müller
sumber