2010-11-25 5 views
0

Ich habe die folgende URL, die mir die Liste der Ressourcen zurückgibt:REST-Architektur - Wie würde die URL einer komplexen Methode aussehen?

http://example.com/resources/

I implementiert auch eine Methode, die eine bestimmte Ressource zurückgibt (in diesem Fall ist die Ressource 142).

http://example.com/resources/142

Ich mag eine Methode hinzufügen, die außerhalb der typischen HTTP-Methode ist: Liste, Erstellen, Abrufen, Ersetzen, Aktualisieren. Was ist das Muster zu folgen? In meinem speziellen Fall muss ich die Verfügbarkeit der Ressource überprüfen. Wie würde die Url aussehen (http://example.com/resources/checkavailability/142)?

Ich über die einfache Verwendung der GET-Methode und abrufen Sie diese Informationen als Teil des zurückgegebenen Objekts. Einige meiner Kollegen argumentieren jedoch, dass dies nicht effizient wäre (die zu übertragenden Daten wären viel größer als nur die Rückgabe von wahr/falsch).

Danke für die Hilfe!

+0

I Wenn Sie Methoden hinzufügen, die außerhalb der typischen HTTP-Methoden liegen, sollten Sie eine hinzufügen, um die Verfügbarkeit zu prüfen, etwa EXISTS. Auf diese Weise können Sie die gleiche URL verwenden und für diese Methode nur ein Wahr/Falsch zurückgeben. –

Antwort

3

Es besteht keine Notwendigkeit für eine Ressource, die Verfügbarkeit von einer anderen Ressource zu überprüfen, und es gibt keine Notwendigkeit für eine GET-Anfrage, eine HEAD Anfrage sollte genug sein, dies ist das gleiche wie ein GET Anfrage aber ohne den Körper zu übertragen. Sie können sich dann die Rückgabecodes ansehen und über diese feststellen, ob die Ressource verfügbar ist. Dies setzt voraus, dass Sie die Rückkehrcodes korrekt implementiert haben.

1

Restful über HTTP gibt Ihnen einheitliche Schnittstelle, Sie oft brauchen nicht die Aktionen in Ihrem URL

In Bezug auf Ihre erwähnten/Checkavailability Rückkehr Ineffizienz ist ein gültiger Grund Nutzlast mit GET zu codieren, so verwenden HEAD (nur gibt Ihnen die Antwortheader zurück).

 
request: 
HEAD /resources/123 

response status: 
404 Not Found: equals to /checkavailability == false 
200 OK: equals to /checkavailability == true 

Andere Vorschläge einheitliche Schnittstelle Ersatz:

  • /resources/Liste: GET/Ressourcen
  • /resources/ersetzen/123: PUT/resources/123
  • /resources/update/123: PUT/resources/123
  • /resources/erstellen: POST/Ressourcen
Verwandte Themen