Saat mendesain antarmuka RESTful, semantik dari tipe permintaan dianggap penting untuk desain.
- DAPATKAN - Daftar koleksi atau ambil elemen
- PUT - Ganti koleksi atau elemen
- POST - Buat koleksi atau elemen
- HAPUS - Ya, erm, hapus koleksi atau elemen
Namun, ini sepertinya tidak mencakup konsep "pencarian".
Misalnya dalam mendesain rangkaian layanan web yang mendukung situs Pencarian Kerja, Anda mungkin memiliki persyaratan berikut:
- Dapatkan Iklan Pekerjaan individual
- GET ke
domain/Job/{id}/
- GET ke
- Buat Iklan Pekerjaan
- POST ke
domain/Job/
- POST ke
- Perbarui Iklan Pekerjaan
- PUT ke
domain/Job/
- PUT ke
- Hapus Iklan Pekerjaan
- HAPUS ke
domain/Job/
- HAPUS ke
"Dapatkan Semua Pekerjaan" juga sederhana:
- GET ke
domain/Jobs/
Namun, bagaimana pekerjaan "pencarian" jatuh ke dalam struktur ini?
Anda dapat mengklaim itu adalah variasi "koleksi daftar" dan terapkan sebagai:
- GET ke
domain/Jobs/
Namun, pencarian bisa rumit dan sangat mungkin untuk menghasilkan pencarian yang menghasilkan string GET panjang. Artinya, merujuk pertanyaan SO di sini , ada masalah menggunakan string GET lebih lama dari sekitar 2000 karakter.
Contoh mungkin dalam pencarian faceted - melanjutkan contoh "pekerjaan".
Saya dapat mengizinkan untuk mencari di aspek - "Teknologi", "Judul Pekerjaan", "Disiplin" serta kata kunci teks bebas, usia pekerjaan, lokasi dan gaji.
Dengan antarmuka pengguna yang lancar dan sejumlah besar teknologi dan jabatan, layak dilakukan pencarian yang dapat mencakup sejumlah besar pilihan segi.
Tweak contoh ini ke CV, daripada pekerjaan, membawa lebih banyak aspek, dan Anda dapat dengan mudah membayangkan pencarian dengan seratus aspek yang dipilih, atau bahkan hanya 40 aspek yang masing-masing terdiri dari 50 karakter (misalnya Judul Pekerjaan, Nama Universitas, Nama Pemberi Kerja).
Dalam situasi itu mungkin diinginkan untuk memindahkan PUT atau POST untuk memastikan bahwa data pencarian akan dikirim dengan benar. Misalnya:
- POST ke
domain/Jobs/
Namun secara semantik itu adalah instruksi untuk membuat koleksi.
Anda juga bisa mengatakan Anda akan mengungkapkan ini sebagai kreasi pencarian:
- POST ke
domain/Jobs/Search/
atau (seperti yang disarankan oleh burninggramma di bawah)
- POST ke
domain/JobSearch/
Semantik mungkin masuk akal, tetapi Anda tidak benar-benar membuat apa-apa, Anda membuat permintaan untuk data.
Jadi, semantik GET , tetapi GET tidak dijamin untuk mendukung apa yang Anda butuhkan.
Jadi, pertanyaannya adalah - Berusaha untuk tetap setia pada desain RESTful mungkin, sambil memastikan bahwa saya tetap dalam batasan HTTP, apa desain yang paling tepat untuk pencarian?
domain/Jobs?keyword={keyword}
. Ini berfungsi dengan baik untuk saya :) Harapan saya adalah, bahwaSEARCH
kata kerja akan menjadi standar. programmers.stackexchange.com/questions/233158/…