2013-07-15 10 views
9

Ich weiß nicht recht, wie man eine REST (oder REST-ähnliche) API sinnvoll strukturiert.Benötigen Sie Hilfe zum Verständnis der REST-API-Endpunkte

Stellen Sie sich eine API zum Erstellen und Versenden von Newsletter-E-Mails vor. Sie können die folgenden Substantive/Ressourcen haben: Newsletter (Betreff, Nachrichtentext usw.), Mailinglisten (Empfängergruppen) und Empfänger (E-Mail-Adressen und zugehörige Daten).

So könnten Sie PUT verwenden, um eine Ressource zu erstellen und seine ID zurückgegeben werden:

/newsletter 
/list 
/user 

Sie Informationen über eine Ressource erhalten könnte mit GET:

/newsletter/[id] 
/list/[id] 
/user/[id] 

Sie können eine bestehende Ressource aktualisieren mit PATCH (oder sollte das POST sein?):

Sie können eine Ressource mit DELETE löschen :

/newsletter/[id] 
/list/[id] 
/user/[id] 
  1. Ist die oben richtig?

  2. Welche Endpunkte sind sinnvoll für Aktionen wie das Senden eines Newsletters an eine Liste und das Hinzufügen eines Benutzers zu einer Liste?

Ist die folgende sinnvoll, und es ist Erholsamer?

/newsletter/[newsletter_id]/send/[mailinglist_id] 
/list/[list_id]/add/[user_id] 
/list/[list_id]/remove/[user_id] 

Ist es überflüssig oder nicht hilfreich list/[id]/add/[id] und list/[id]/remove/[id] Endpunkte für Listen zu haben, wenn die Benutzer hinzugefügt oder über PATCH bei /list/[id] entfernt werden könnte?

Wie wäre es mit der Suche nach einer Benutzer-ID über eine Eigenschaft wie E-Mail-Adresse oder Name? Oder eine Liste über einen Bezeichner wie seinen Namen oder wann er erstellt wurde?

Antwort

7

Sie haben es ziemlich genagelt, außer mit den /list/[list_id]/add/[user_id] und /list/[list_id]/remove[user_id], weil Sie Verben in der URL haben - das ist der Zweck der HTTP-Methoden.Ändern Sie sie auf, zum Beispiel:

PUT (or POST) to /list/[list_id]/users/ for adding a user to the list 

und

DELETE to /list/[list_id]/users/[user_id] 

Für die Suche, ich würde gehen mit parametrisierte URL für die Liste der Ressourcen, wie:

/newsletter/?name=dfjkhskdfh 
+0

Was ist mit dem Verb "send"? – jeremiahs

1

Diese Verben sind oft verwirrt:

  1. Um eine Entität zu erstellen Sie verwenden POST
  2. zu aktualisieren - PUT

Diese Dinge in der folgenden Art und Weise behandelt werden könnten:

POST /newsletters/[newsletter_id]/mailinglists/[mailinglist_id]/mailingfacts - die Buchstaben führt zu senden, es ist wie eine Tatsache von Mailing an die Zugabe Sammlung

/lists/[list_id]/[user_id] - fügt einen Benutzer der Liste

/lists/[list_id]/[user_id] - Löscht den Benutzer aus der Liste.

Verwandte Themen