Secara umum, Anda memiliki satu titik akhir yang mewakili seluruh koleksi x :
/products
Katakanlah, Anda ingin memperbarui satu produk, Anda membuat PUT ke /products/{id}
. Jika Anda ingin memperbarui sebagian produk tunggal (tidak memperbarui setiap bidang), Anda juga dapat menggunakan PATCH untuk /products/{id}
. Hal yang sama berlaku untuk penghapusan satu entitas ( HAPUS ke /products/{id}
).
Jika Anda ingin menargetkan sumber daya tunggal , Anda memenuhi syarat melalui jalur, sumber daya tunggal mana, yang ingin Anda modifikasi.
Satu-satunya tindakan yang memecah skema adalah penciptaan sumber daya. Saat membuat sumber daya Anda menargetkan koleksi secara keseluruhan, katakan POST ke /products
.
Karena itu, harus jelas, bahwa target untuk operasi yang mempengaruhi pengumpulan secara keseluruhan, harus pergi ke pengumpulan-endpoint yang sesuai.
Misalnya Anda ingin mengambil subset dari produk yang berwarna merah, Anda memintanya
GET untuk /products?colour=red
.
Jadi, jika Anda ingin menghapus semua ini, Anda HAPUS /products?colour=red
. Atau jika Anda ingin menghapus beberapa produk melalui id
, Anda bisa HAPUS /products?id=1&id=2&id=3
.
Bagaimana dengan pembuatan sumber daya massal ? POST koleksi Anda [{...},{...},{...}]
hanya untuk /products
. Hal yang sama berlaku untuk PUT dan PATCH .
Itu sangat mudah.
Untuk menjawab pertanyaan Anda:
Jika saya perlu menambah koleksi, apakah boleh saya melewati beberapa produk dengan PUT?
Tidak hanya OK, Anda didorong untuk melakukannya seperti itu.
Jika saya perlu menghapus beberapa produk dari koleksi, apakah boleh saya melewati data filter (array ID) dengan DELETE?
Tidak apa-apa. Seperti yang dituliskan oleh Eneko Alonso, kadang-kadang ada operasi massal yang dienkapsulasi melalui "controller" -poin, yaitu POST digunakan untuk memicu operasi (kompleks).