REST: Aktualisieren Sie Mehrere Ressourcen Mit Einer Anfrage - Ist es standard oder vermieden werden?

Einer einfachen REST-API:

  • BEKOMMEN: Artikel/{id} - Gibt eine Beschreibung für das Element mit der angegebenen id
  • : Artikel/{id} - Aktualisiert oder Erstellt das Element mit der angegebenen id
  • LÖSCHEN: Artikel/{id} - Löscht das Element mit der angegebenen id

Nun die API-Erweiterung in Frage:

  • HOLEN Sie sich: Gegenstände?filter - Gibt alle Element-ids, die den Filterkriterien entsprechen
  • SETZEN: die Artikel - Updates oder erstellt einen Satz von Elementen, wie beschrieben, durch die JSON-Nutzlast
  • [[LÖSCHEN: Artikel - löscht eine Liste von Elementen, beschrieben von JSON-Nutzlast]] <- Nicht Korrekt

Bin ich nun daran interessiert, das LÖSCHEN und SETZEN Betrieb-recycling-Funktionalität, die leicht zugänglich durch SETZEN/LÖSCHEN von Elementen/{id}.

Frage: Ist es üblich, eine API bieten so?

Alternative: Im Zeitalter der Einzigen Verbindung Mehrere Anfragen Erteilung mehrerer Aufträge ist Billig und würde mehr arbeiten, atomic, da ein ändern Sie entweder erfolgreich ist oder scheitert, aber im Zeitalter von NOSQL-Datenbank-eine änderung in der Liste werden möglicherweise schon passiert ist, auch wenn die request-Verarbeitung bricht mit einem internal server oder was auch immer aus welchen Gründen auch immer.

[UPDATE]

Nach Berücksichtigung White House-Web-Standards und Wikipedia: REST Beispiele die folgenden Beispiel-API ist jetzt vorgesetzt:

Einer einfachen REST-API:

  • BEKOMMEN: Artikel/{id} - Gibt eine Beschreibung für das Element mit der angegebenen id
  • : Artikel/{id} - Aktualisiert oder Erstellt das Element mit der angegebenen id
  • LÖSCHEN: Artikel/{id} - Löscht das Element mit der angegebenen id

Top-Ressource-API:

  • HOLEN Sie sich: Gegenstände?filter - Gibt alle Element-ids, die den Filterkriterien entsprechen
  • POST: die Artikel - Updates oder erstellt einen Satz von Elementen, wie beschrieben, durch die JSON-Nutzlast

SETZEN und LÖSCHEN /Elemente werden nicht unterstützt und verboten.

POST scheint, den trick zu tun, als die eine zu erstellen neue Elemente in einer umschließenden Ressource, während der nicht zu ersetzen, sondern Anhängen.

Die HTTP-Semantik POST Liest:

Erweitern einer Datenbank durch eine Anfüge-operation

Wo die PUT-Methode erfordern würde, zu ersetzen, the complete collection, um wieder eine gleichwertige Darstellung wie zitiert Die HTTP-Semantik SETZEN:

Einer erfolgreichen SETZEN einer bestimmten Darstellung würde vorschlagen, dass ein Anschließendes GET auf die gleiche Ziel-Ressource wird durch eine gleichwertige Vertretung zurückgegeben wird in ein 200 (OK) Antwort.

[UPDATE2]

Alternative, die scheint noch konsequenter für das update Aspekt von mehreren Objekten zu sein scheint, die PATCH-Methode. Der Unterschied zwischen PUT-und PATCH beschrieben wird, in der Entwurf RFC 5789:

Den Unterschied zwischen PUT-und PATCH-Anforderungen spiegelt sich in der Art und Weise verarbeitet der server die geschlossene Entität zu ändern, die die Ressource identifiziert durch die Request-URI. In einer PUT-Anfrage die geschlossene Einheit ist als eine modifizierte version der Ressource, die gespeichert auf dem Ursprungs-server und der client anfordert, dass die gespeicherte version ersetzt werden. Mit PATCH, jedoch die geschlossene Entität enthält eine Reihe von Anweisungen, die beschreiben, wie eine Ressource, die derzeit mit Wohnsitz auf den Ursprung-server geändert werden sollte, um zu produzieren eine neue version. Die PATCH-Methode wirkt sich auf die Ressource identifiziert durch die Request-URI, und es KANN auch Nebenwirkungen auf andere Ressourcen; d.h., neue Ressourcen erstellt werden, oder bestehende geändert, durch die Anwendung eines PATCHES.

Also im Vergleich zu POST, PATCH kann auch eine bessere Idee, da PATCH ermöglicht es ein UPDATE, wo als die POST erlaubt nur anfügen, etwas Bedeutung hinzufügen, ohne die chance auf änderung.

Also die POST scheint hier falsch und müssen wir ändern die von uns vorgeschlagene API:

Einer einfachen REST-API:

  • BEKOMMEN: Artikel/{id} - Gibt eine Beschreibung für das Element mit der angegebenen id
  • : Artikel/{id} - Aktualisiert oder Erstellt das Element mit der angegebenen id
  • LÖSCHEN: Artikel/{id} - Löscht das Element mit der angegebenen id

Top-Ressource-API:

  • HOLEN Sie sich: Gegenstände?filter - Gibt alle Element-ids, die den Filterkriterien entsprechen
  • POST: Artikel - Legt einen oder mehrere Artikel, wie beschrieben, durch die JSON-Nutzlast
  • PATCH: Elemente Erstellt oder Aktualisiert eine oder mehrere Elemente, wie beschrieben, durch die JSON-Nutzlast

InformationsquelleAutor der Frage Martin Kersten | 2015-08-19

Schreibe einen Kommentar