2016-05-25 3 views
0

Ich versuche Verben nicht zu verwenden, wenn ein REST-api Gestaltung aber (wie in REST) ​​Namenskonventionen für ein paar Operationen (Verben) in REST

Hier sind ein paar

erneut vorstellen Operationen als Ressourcen zu kämpfen
/guest/accountnumber/isValid/{username} (returns a Boolean by checking if account number is valid) 
/user/associateAccount/{firstAcc}/{secondAcc} (returns a Boolean. Links up the two passed in accounts) 

ich absichtlich wirklich wollen keine schlechte Praxis und töten den Geist der REST folgen, aber ich bin zu kämpfen diese Transfers als Ressourcenstatus statt Geflügel XML RPC Stil Operationen oder Remote-Methode Anrufungen neu zu denken. Jede Hilfe wird geschätzt!

Antwort

1

Zeigt der Boolesche Wert den Erfolg der Operation an? HTTP-Antwortcodes können dafür verwendet werden.

Für die "zugeordneten Konten", stellen Sie sich die Assoziation selbst als ein Objekt vor. Diese Objekte können als in einem "Ordner" unter dem Konto, auf das sie sich beziehen, vorgestellt werden.

Sie könnten PUT /accounts/{firstAcc}/associations/{secondAcc} einen HTTP-Code zurückgeben, der angibt, ob die Konten erfolgreich zugeordnet wurden (z. B. 201 Created oder 409 Conflict). DELETE /accounts/{firstAcc}/associations/{secondAcc} kann verwendet werden, um den Link zu entfernen.

Für Ihr anderes Beispiel, sehe ich nicht genau, was Sie ausdrücken möchten. Ist es nur ein Check, um zu sehen, ob ein Account existiert? Dafür würde ich HEAD /accounts/{number} verwenden. Es würde 200 zurückgeben, wenn das Konto gültig ist und 404 wenn nicht.

+0

Ziemlich gute Antwort. Ich möchte jedoch hinzufügen, dass im Allgemeinen der Schlüssel zum Vermeiden von Verben das Vorstellen von Aktionen und Eigenschaften als Objekte ist. Das beste Beispiel dafür habe ich gesehen: statt POST (oder PUT) nach/rocket/launch benutze PUT (oder POST) nach/rocket/launches/um "create new startobjekt Eigenschaft der Rakete". Im allgemeinen Fall von isValid-Prüfungen existierender Objekte können Sie versuchen, eine Gültigkeitseigenschaft (GET/accounts/{id}/validity) zu erhalten oder sie als Eigenschaft eines zurückgegebenen Objekts von GET/accounts/{id} zu verwenden. – maiksaray