Il bel design RESTful dell'URL riguarda la visualizzazione di una risorsa basata su una struttura (struttura simile a una directory, data: articoli / 2005/5/13, oggetto e relativi attributi, ..), la barra /
indica la struttura gerarchica, utilizzare -id
invece.
Struttura gerarchica
Personalmente preferirei:
/garage-id/cars/car-id
/cars/car-id #for cars not in garages
Se un utente rimuove la /car-id
parte, porta l' cars
anteprima - intuitiva. L'utente sa esattamente dove si trova nell'albero, cosa sta guardando. Sa dal primo sguardo che garage e macchine sono in relazione. /car-id
denota anche che appartiene insieme a differenza /car/id
.
ricerca
La query di ricerca è OK così com'è , c'è solo la tua preferenza, cosa dovrebbe essere preso in considerazione. La parte divertente arriva quando si uniscono le ricerche (vedi sotto).
/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 &*
O praticamente tutto ciò che non è una barra come spiegato sopra.
La formula:, /cars[?;]color[=-:]blue[,;+&]
* anche se non userei il &
segno in quanto non è riconoscibile dal testo a prima vista.
** Sapevi che passare l'oggetto JSON in URI è RESTful? **
Elenco di opzioni
/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
possibili funzionalità?
Annulla le stringhe di ricerca (!)
Per cercare qualsiasi auto, ma non nero e rosso :
?color=!black,!red
color:(!black,!red)
Ricerche unite
Cerca auto rosse o blu o nere con 3 porte in garage id 1..20 o 101..103 o 999 ma non 5
/garage[id=1-20,101-103,999,!5]/cars[color=red,blue,black;doors=3]
Puoi quindi costruire query di ricerca più complesse. (Osserva la corrispondenza degli attributi CSS3 per l'idea della corrispondenza delle sottostringhe. Ad esempio, cerca gli utenti che contengono "barra" user*=bar
.)
Conclusione
Ad ogni modo, questa potrebbe essere la parte più importante per te, perché puoi farlo come preferisci, tieni presente che RESTful URI rappresenta una struttura che è facilmente comprensibile, ad esempio /directory/file
, simile a una directory /collection/node/item
, date /articles/{year}/{month}/{day}
.. E quando ometti uno degli ultimi segmenti, sai immediatamente cosa ottieni.
Quindi .., tutti questi personaggi sono ammessi senza codifica :
RFC 3986 vedi 2.2
Nonostante ciò che ho detto in precedenza, ecco una distinzione comune di delimitatori, nel senso che alcuni "sono" più importanti di altri.
- delimitatori generici:
:/?#[]@
- sub-delimitatori:
!$&'()*+,;=
Altre letture:
Gerarchia: vedi 2.3 , vedi 1.2.3
sintassi del parametro url path
Attributo CSS3 corrispondente
IBM: Servizi Web RESTful - Nozioni di base
Nota: RFC 1738 è stato aggiornato da RFC 3986
/cars
e/car
non è semantico e quindi una cattiva idea. Usa sempre il plurale quando c'è più di un oggetto in quella categoria.