RESTful-Ressourcen - akzeptiert eine Liste von Objekten

Baue ich eine Sammlung von Rest-Ressourcen, die Arbeit wie folgt: (ich nehme "Menschen" als ein Beispiel):

 GET /people/{key} 
- liefert ein person-Objekt (JSON) 
 GET /Menschen?first_name=Bob 
- gibt eine Liste von person-Objekten, die die "first_name" "Bob" (JSON) 
 PUT /people/{key} 
- erwartet wird ein person-Objekt in der Nutzlast (JSON), updates der Mensch in der 
datastore mit dem {key} gefunden in der URL-parameter entsprechend der Nutzlast. 
Wenn es ein neues Objekt, der Kunde gibt den Schlüssel des neuen Objekts. 

Ich fühle mich sehr wohl mit dem design so weit (obwohl jeder input/Kritik ist willkommen).

Ich würde auch gerne in der Lage sein, eine Liste von Menschen, aber ich bin nicht zuversichtlich, in der RESTfulness mein design. Dies ist, was ich im Sinn haben:

 PUT /Menschen 
- erwartet eine Liste von Objekten in JSON-form mit Tasten in das Objekt aufgenommen 
("key":"32948"). Updates alle entsprechenden Objekte im datastore. 

Dieser Vorgang wird idempotent, also würde ich gerne verwenden "SETZEN". Aber seine Regelverstöße, da eine GET-Anfrage an diese Ressource wird nicht wieder dem entspricht, was der Kunde gerade zu STELLEN, aber würde lieber wieder alle "Menschen" - Objekte (da gäbe es keine Filter auf die Abfrage). Ich vermute, es gibt auch noch ein paar andere Regeln, die könnte gebrochen werden, hier.

Jemand erwähnt die Verwendung von "PATCH" - Anfrage in einer früheren Frage, die ich hatte: REST-Ressource mit einer Eigenschaft List

"PATCH" klingt fantastisch, aber ich will nicht, es zu benutzen, denn es ist weder weit noch und ist nicht kompatibel mit vielen Programmen und APIs noch.

Würd ich lieber nicht POSTEN, weil die POST impliziert, dass die Anforderung ist nicht idempotent.

Hat jemand irgendwelche Kommentare /Anregungen?

Follow-up:::

Während ich zögerte, um die Verwendung buchen, denn es scheint der kleinste gemeinsame Nenner, catch-all für RESTful-Operationen und mehr kann gesagt werden über diesen Vorgang (speziell, dass es ist idempotent), DIE nicht eingesetzt werden, weil Ihre Forderungen sind zu schmal. Konkret: die Ressource ist nicht völlig neu geschrieben und die entsprechende Ressource wird nicht gesendet zurück von einer GET-Anforderung an dieselbe Ressource. Mit einer PUT mit Eigenschaften, die außerhalb der Spezifikationen liegen, können zu Problemen führen, wenn Anwendungen, api, und/oder Programmierer Versuch der Arbeit mit der Ressource, und sind erfüllt mit einem unerwarteten Verhalten der Ressource.

Zusätzlich zu den akzeptierten Antworten, Darrel Miller hatte einen ausgezeichneten Vorschlag, wenn der Betrieb musste unbedingt ein und das war zum Anhängen einer UUID auf das Ende der Ressourcen-Pfad, also ein äquivalent GET-Anforderung zurück, die äquivalente Ressource.

InformationsquelleAutor Chris Dutrow | 2010-07-07
Schreibe einen Kommentar