HTTP-Antwort-code, wenn die Ressource Schöpfung POST scheitert an vorhandenen passenden Ressource
Sich vorstellen, wir haben eine API, wo ein neuer Mitarbeiter erstellt werden können, durch einen BEITRAG zu
www.example.com/api/employees
Mitarbeiter könnten beschrieben werden,
{
name: "John Smith",
tax_number: "ABC123"
}
Die Steuer-Nummer ist universell eindeutig für alle Menschen. Wenn ein create gemacht wurden, und bereits ein Datensatz existiert, in dem der name und die Steuernummer abgestimmt einen bestehenden Datensatz, ist es sicher davon ausgehen, dass der Antragsteller möchte eine Referenz auf den Datensatz zurückgegeben (mit der internen id und andere Daten, die der client möglicherweise nicht haben, zB. erstellt, aktualisiert).
Was würde der HTTP-status-code für die Rückkehr, die Ressource? Ich nehme an, ein redirect verwendet werden könnte, mit einer Rendite von nur die id, aber ich würde es vorziehen, setzen Sie den gesamten Objekts in der Antwort.
Dieser Fall ist einzigartig, eine einfache doppelte Fehler, in dem Sinne, dass, wenn eine Vervielfältigung ist versucht, es bedeutet, dass der Datensatz, den Sie erstellen möchten, der bereits existiert - anders als es in Konflikt mit einem vorhandenen Datensatz.
Siehe aber auch HTTP-response-code für die POST, wenn die Ressource bereits existiert.
InformationsquelleAutor dave | 2014-08-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, wenn Sie nach einer Ressource, um eine API, die Sie erwarten, einen code 201, der wird feststellen, dass die Ressource erstellt wurde, und der Körper wird (kann) enthalten, der die Ressource.
Andernfalls müssen Sie zunächst prüfen, ob die Ressource ist bereits erstellt, aber diese brauchen zwei Anrufe.
ansonsten muss der status code 409 :
[Bearbeiten] nach dem Lesen auf Erholsamen Web-Apis von amundsen, Ruby und Richardson
Beste wäre, die Nutzung 409-status-code, der besagt, dass es einen Konflikt mit einer Ressource, die auf dem server vorhanden ist. Legen Sie die url, die "Konflikt" - Ressource in der Location-Header der Antwort und eine Nachricht hinzufügen der Konflikt in den Körper
aber hier versucht er, eine Ressource mit einem tax_number, dass ist das gleiche wie eine andere Ressource, die bereits im backend erstellt. so kann die Nachricht zurück, dass es einen Konflikt mit einer anderen Ressource, die bereits erstellt und die Rückkehr der bereits erstellte Ressource in den Körper. Dies könnte aber auch mit einem 403 status-code verboten, mit der gleichen Fehlermeldung.
Richtig, aber für 409, - wie können die Verbraucher den Konflikt zu lösen? Sie können nicht sehr gut gehen, und ändern Sie die person, die Steuernummer, können Sie? 😀 Wirklich, nichts getan werden kann außer zeigen einen Fehler an den Benutzer mit der Fehlerursache.
die 409 Staaten gibt es einen Konflikt und die Rückkehr Körper, er kann den Konflikt als Ressource. Aber wenn 409 ist nicht akzeptabel, dann würde ich für 403 forbidden-statt 500, da für mich 500-Statuscode Staaten ein problem mit dem code, oder unhandle Ausnahmen oder andere interne defekt
Ich denke, in diesem Fall zu beheben die 409, die client-Anwendung brauchen würde, um eine Meldung anzuzeigen, dass die bestehenden Steuer-Nummer bereits vorhanden ist und würde Sie gerne aktualisieren der vorhandenen Ressourcen statt. Zu einer Lösung des Konflikts bedeutet nicht, dass Sie brauchen, um zu versuchen, die gleiche Methode wieder, in diesem Fall, wenn der Benutzer will, zu Bearbeiten, ERHALTEN Sie die neueste Kopie der Steuernummer und SETZEN Sie dann die änderungen
InformationsquelleAutor Cedric Dumont
Es ist ein 409 Conflict - Antwort-code, die Häufig verwendet wird, damit der Kunde weiß solche Entität existiert bereits auf dem server. Es ist vielleicht nicht sehr intuitiv zu analysieren den Körper mit einer Fehlermeldung beantwortet, aber wenn, geben Sie dies in die API-Dokumentation sollte es kein problem sein (die info über den ursprünglichen Eintrag im response-body).
InformationsquelleAutor stan0