2016-07-29 41 views
1

Ich habe eine RESTAPI, mit der Benutzer Dokumente in einer Nosql-Datenbank löschen können. Alle untergeordneten Dokumente werden ebenfalls entfernt. ..Korrigieren Sie http Statuscode zu verwenden, wenn Löschen nur teilweise erfolgreich war?

DELETE /api/document/dummyId 

So würde dieses Dokument mit id von dummyId und alle untergeordneten Dokumente löschen.

Wenn erfolgreich, antworten Sie mit einem Statuscode von 204.

Wenn 2 von 3 untergeordneten Dokumenten nicht gelöscht werden können, aus welchen Gründen auch immer, möchte ich diese in die body der Antwort zurück an den Client einschließen.

Welcher Statuscode ist hier am besten geeignet? Betrachten Sie einige Dokumente, wo gelöscht wurde und andere nicht.

+0

Sollte die Operation nicht transaktional sein? –

+0

Nein, ich verwende CouchDB, die ein "optimistic Concurrency" -Modell verwendet. – bobbyrne01

Antwort

2

Es gibt keinen korrekten HTTP-Statuscode dafür, da die DELETE Anweisung MUSS entweder vollständig erfolgreich ist oder überhaupt nichts tut.

Es gibt nicht wirklich einen "Teilerfolg" in HTTP. WebDAV fügt dies einigen Funktionen hinzu, aber auch in WebDAV muss der DELETE vollständig erfolgreich sein oder den Status der Ressource nicht beeinflussen.