The tenang desain URL cantik adalah tentang menampilkan sumber daya berdasarkan struktur (direktori-seperti struktur, tanggal: artikel / 2005/5/13, objek dan atribut itu, ..), garis miring /
menunjukkan struktur hirarkis, gunakan -id
sebagai gantinya.
Struktur hierarkis
Secara pribadi saya lebih suka:
/garage-id/cars/car-id
/cars/car-id #for cars not in garages
Jika pengguna menghapus /car-id
bagian, itu membawa cars
pratinjau - intuitif. Pengguna tahu persis di mana pohon itu berada, apa yang ia lihat. Dia tahu dari pandangan pertama, bahwa garasi dan mobil berhubungan. /car-id
juga menunjukkan bahwa itu milik bersama tidak seperti /car/id
.
Mencari
Permintaan pencarian tidak apa-apa , hanya ada preferensi Anda, apa yang harus diperhitungkan. Bagian yang lucu muncul ketika bergabung dengan pencarian (lihat di bawah).
/cars?color=blue;type=sedan #most prefered by me
/cars;color-blue+doors-4+type-sedan #looks good when using car-id
/cars?color=blue&doors=4&type=sedan #I don't recommend using &*
Atau pada dasarnya apa pun yang bukan garis miring seperti yang dijelaskan di atas.
Rumus:, /cars[?;]color[=-:]blue[,;+&]
* meskipun saya tidak akan menggunakan &
tanda karena tidak dapat dikenali dari teks pada pandangan pertama.
** Tahukah Anda bahwa meneruskan objek JSON di URI adalah RESTful? **
Daftar opsi
/cars?color=black,blue,red;doors=3,5;type=sedan #most prefered by me
/cars?color:black:blue:red;doors:3:5;type:sedan
/cars?color(black,blue,red);doors(3,5);type(sedan) #does not look bad at all
/cars?color:(black,blue,red);doors:(3,5);type:sedan #little difference
fitur yang mungkin?
Negasikan string pencarian (!)
Untuk mencari mobil apa pun, tetapi tidak hitam dan merah :
?color=!black,!red
color:(!black,!red)
Pencarian yang tergabung
Cari mobil merah atau biru atau hitam dengan 3 pintu di garasi id 1..20 atau 101..103 atau 999 tetapi tidak 5
/garage[id=1-20,101-103,999,!5]/cars[color=red,blue,black;doors=3]
Anda dapat membuat kueri pencarian yang lebih kompleks. (Lihatlah CSS3 atribut yang cocok untuk gagasan pencocokan substring. Misalnya mencari pengguna yang mengandung "bar" user*=bar
.)
Kesimpulan
Anyway, ini mungkin menjadi bagian paling penting bagi Anda, karena Anda dapat melakukannya namun Anda seperti setelah semua, hanya perlu diingat bahwa tenang URI merupakan struktur yang mudah dipahami misalnya direktori-seperti /directory/file
, /collection/node/item
, tanggal /articles/{year}/{month}/{day}
.. Dan ketika Anda menghilangkan salah satu segmen terakhir, Anda langsung tahu apa yang Anda dapatkan.
Jadi .., semua karakter ini dibiarkan tanpa kode :
RFC 3986 lihat 2.2
Terlepas dari apa yang saya katakan sebelumnya, berikut adalah perbedaan umum dari pembatas, yang berarti bahwa beberapa " lebih penting" dari yang lain.
- pembatas generik:
:/?#[]@
- sub-delimeter:
!$&'()*+,;=
Lebih banyak bacaan:
Hierarki: lihat 2.3 , lihat 1.2.3
parameter jalan sintaks parameter
pencocokan CSS3 atribut
IBM: RESTful Web services - Dasar-dasar
Catatan: RFC 1738 telah diperbarui oleh RFC 3986
/cars
dan/car
tidak semantik dan karena itu ide yang buruk. Selalu gunakan jamak ketika ada lebih dari satu item di bawah kategori itu.