La jolie conception d'URL RESTful consiste à afficher une ressource basée sur une structure (structure de type répertoire, date: articles / 2005/5/13, objet et ses attributs, ..), la barre oblique /
indique une structure hiérarchique, utilisez -id
plutôt la.
Structure hiérarchique
Je préférerais personnellement:
/garage-id/cars/car-id
/cars/car-id #for cars not in garages
Si un utilisateur supprime la /car-id
partie, il apporte l' cars
aperçu - intuitif. L'utilisateur sait exactement où il se trouve dans l'arbre, qu'est-ce qu'il regarde. Il sait dès le premier regard que les garages et les voitures sont en relation. /car-id
indique également qu'il appartient ensemble contrairement à /car/id
.
Recherche
La requête de recherche est OK telle quelle , il n'y a que votre préférence, ce qui doit être pris en compte. La partie amusante survient lors de la jointure de recherches (voir ci-dessous).
/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 &*
Ou fondamentalement tout ce qui n'est pas une barre oblique comme expliqué ci-dessus.
La formule /cars[?;]color[=-:]blue[,;+&]
:, * bien que je n'utiliserais pas le &
signe car il n'est pas reconnaissable dans le texte à première vue.
** Saviez-vous que le passage d'un objet JSON dans l'URI est RESTful? **
Listes d'options
/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
fonctionnalités possibles?
Annulez les chaînes de recherche (!)
Pour rechercher des voitures, mais pas en noir et rouge :
?color=!black,!red
color:(!black,!red)
Recherches jointes
Rechercher des voitures rouges ou bleues ou noires avec 3 portes dans les garages id 1..20 ou 101..103 ou 999 mais pas 5
/garage[id=1-20,101-103,999,!5]/cars[color=red,blue,black;doors=3]
Vous pouvez ensuite construire des requêtes de recherche plus complexes. (Regardez la correspondance d'attributs CSS3 pour l'idée de faire correspondre les sous-chaînes. Par exemple, recherche d'utilisateurs contenant "bar" user*=bar
.)
Conclusion
Quoi qu'il en soit, cela pourrait être la partie la plus importante pour vous, car vous pouvez le faire comme vous le souhaitez, gardez à l'esprit que l' URI RESTful représente une structure qui est facilement compréhensible, par exemple /directory/file
, comme un répertoire,, /collection/node/item
dates /articles/{year}/{month}/{day}
.. Et lorsque vous omettez l'un des derniers segments, vous savez immédiatement ce que vous obtenez.
Alors .., tous ces caractères sont autorisés non encodés :
RFC 3986 voir 2.2
Malgré ce que j'ai dit précédemment, voici une distinction courante des délimètres, ce qui signifie que certains "sont" plus importants que d'autres.
- délimètres génériques:
:/?#[]@
- sous-délimètres:
!$&'()*+,;=
Pour en savoir plus:
Hiérarchie: voir 2.3 , voir 1.2.3
syntaxe du paramètre de chemin url
Attribut CSS3 correspondant à
IBM: services Web RESTful - Notions de base
Remarque: RFC 1738 a été mis à jour par RFC 3986
/cars
et/car
n'est pas sémantique et donc une mauvaise idée. Utilisez toujours le pluriel lorsqu'il y a plus d'un élément dans cette catégorie.