2017-02-22 4 views
0

Es wurde eine couple von questions in Bezug auf RESTful URL-Design für die Suche nach Ressourcen. Was mich interessiert, ist eine RESTful-URL für eine einzelne Ressource durch etwas anderes als die Ressourcen-ID.RESTful-URL-Design für die Suche nach einer einzelnen Ressource

Zum Beispiel hat ein Benutzer eine ID und eine Ressourcen-URL /rest/user/<id>. Ich möchte die Suche nach einem einzelnen Benutzer über seine E-Mail-Adresse zulassen (die vom System als eindeutig angesehen wird).

Alternativen Ich habe kommen mit:

A) /rest/user/email/[email protected] - eine separate Ressource erstellen, die einzelne Ressource für den Zugriff auf (obwohl /rest/user/email würde /rest/user/email:[email protected])

B) undefiniert - hier email:[email protected] gilt als eine alternative Kennung für den Benutzer, also dies ist der gleiche Ressource Endpunkt mit einer alternativen ID

C) /rest/[email protected] - das ist RESTful Suche, aber es würde zurückkehren n ein Array mit null oder einem Eintrag, und somit ist kein direkter Bezug auf die Ressource

D) /rest/user/[email protected] - ähnliche Suche API als (C), aber mit unterschiedlicher Semantik

Die Konstruktion sollte mit dem Suchen erweiterbar verschiedene eindeutige IDs, die vom System bereitgestellt werden (externe ID, Telefonnummer, SSN usw.).

Ich orientiere mich an Option B, da sie eine alternative Möglichkeit zur Referenzierung eines bestimmten Benutzers (die global im Service verwendet werden kann) definiert und vorhandene Ressourcenendpunkte wiederverwendet. Dies könnte sowohl auf PUT und DELETE als auch auf GET erweitert werden. Aber ist es sehr RESTful?

+0

Mögliches Duplikat von [REST API DESIGN - Abrufen einer Ressource über REST mit verschiedenen Parametern, aber demselben URL-Muster] (http://stackoverflow.com/questions/20381976/rest-api-design-getting-a-resource-through -rest-mit-verschiedenen-Parametern-aber) – vtortola

Antwort

0

/rest/user/[email protected], der Schrägstrich '/', der zum Darstellen der Ebenenbeziehung verwendet wird, z./rest/customer/orders/order1, customer hat die sammlung von aufträgen, orders hat eine bestellung namens order1.

Verwandte Themen