Beim hübschen RESTful-URL-Design geht es darum, eine Ressource basierend auf einer Struktur anzuzeigen (verzeichnisähnliche Struktur, Datum: Artikel / 2005/5/13, Objekt und seine Attribute, ..). Der Schrägstrich /
zeigt eine hierarchische Struktur an-id
stattdessen die.
Hierarchische Struktur
Ich persönlich würde es vorziehen:
/garage-id/cars/car-id
/cars/car-id #for cars not in garages
Wenn ein Benutzer das /car-id
Teil entfernt, wird die cars
Vorschau angezeigt - intuitiv. Der Benutzer weiß genau, wo er sich im Baum befindet und worauf er schaut. Er weiß vom ersten Blick an, dass Garagen und Autos in Beziehung stehen. /car-id
bedeutet auch, dass es im Gegensatz zu zusammen gehört/car/id
.
Suchen
Die Suchabfrage ist in Ordnung , es gibt nur Ihre Präferenz, was berücksichtigt werden sollte. Der lustige Teil kommt beim Beitreten zu Suchanfragen (siehe unten).
/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 &*
Oder im Grunde alles, was kein Schrägstrich ist, wie oben erklärt.
Die Formel : /cars[?;]color[=-:]blue[,;+&]
, * obwohl ich das &
Zeichen nicht verwenden würde , da es auf den ersten Blick nicht aus dem Text erkennbar ist.
** **. Wussten Sie, dass das Übergeben eines JSON-Objekts in URI RESTful ist? ** **.
Liste der Optionen
/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
mögliche Funktionen?
Suchzeichenfolgen negieren (!)
So suchen Sie nach Autos, aber nicht nach Schwarz und Rot :
?color=!black,!red
color:(!black,!red)
Neues Profil Suchen
Suchen rot oder blau oder schwarz Autos mit 3 Türen in Garagen ID 1..20 oder 101..103 oder 999 , aber nicht 5
/garage[id=1-20,101-103,999,!5]/cars[color=red,blue,black;doors=3]
Sie können dann komplexere Suchanfragen konstruieren. (Schauen Sie sich die CSS3-Attributübereinstimmung an, um die Idee zum Abgleichen von Teilzeichenfolgen zu finden. Suchen Sie beispielsweise nach Benutzern, die "bar" enthalten.user*=bar
.)
Fazit
Auf jeden Fall könnte dies der wichtigste Teil für Sie sein, denn Sie können es tun, wie Sie möchten. Denken Sie jedoch daran, dass RESTful URI eine Struktur darstellt, die leicht zu verstehen ist, z. B. verzeichnisartig /directory/file
./collection/node/item
, Daten /articles/{year}/{month}/{day}
.. Und wenn man weglassen In jedem der letzten Segmente wissen Sie sofort, was Sie erhalten.
Also .., alle diese Zeichen dürfen nicht codiert werden :
RFC 3986 siehe 2.2
Trotz allem, was ich zuvor gesagt habe, gibt es hier eine allgemeine Unterscheidung von Begrenzern, was bedeutet, dass einige " wichtiger " sind als andere.
- generische Begrenzer:
:/?#[]@
- Unterbegrenzer:
!$&'()*+,;=
Weitere Informationen:
Hierarchie: siehe 2.3 , siehe 1.2.3
URL-Pfadparametersyntax
CSS3-Attributübereinstimmung
IBM: RESTful Web Services - Die Grundlagen
Hinweis: RFC 1738 wurde von RFC 3986 aktualisiert
/cars
und/car
nicht semantisch ist und daher eine schlechte Idee. Verwenden Sie immer den Plural, wenn sich mehr als ein Element in dieser Kategorie befindet.