2016-09-21 5 views
2

Ich muss ein paar Webdienste erstellen, um mögliche Werte bestimmter Felder zu validieren. Ich bin Betrachtung wie etwas mit:REST API für die Feldvalidierung

POST /entity/fieldName body { fieldValues } 

wo der POST 400 (Bad Anfrage) zurück, wenn die Argumente ungültig und 422 (Unprocessable Einheit) sind anders. Allerdings gefällt mir der 422-Response-Teil nicht wirklich, da die Anfrage immer einen Fehler zurückgibt. Auf der anderen Seite, da ich nur Validierung und dies ist ein POST Ich möchte nicht wirklich eine neue Ressource auf dem Server erstellen (d. H. Zurück 200). Gibt es einen anderen HTTP-Methode/API-Endpunkt, der dafür besser geeignet ist? Für was es wert ist, werde ich überprüfen, dass das Entity-Feld mit <fieldName> seinen Wert in einem bestimmten Bereich hat.

+0

Nun, da der Endpunkt für * Validierung Zwecke * meiner Meinung nach sollte es return ** 422 Unprocessable Entity **, wenn die Entität nicht gültig ist (anstelle von ** 400 bad request **) und ** 200 OK **, wenn die Entität gültig ist. – BackSlash

+0

@BackSlash, aber nicht mit POST und Rückgabe 200 bedeuten, dass eine neue Ressource auf dem Server erstellt wurde? Weil so etwas tatsächlich nicht passieren wird. – asenovm

+3

Ich denke, dass "eine neue Ressource erstellt wurde" ist ** 201 Created **. 200 OK bedeutet "Anfrage wurde bearbeitet und alles war in Ordnung" für mich. Aber ich bin definitiv kein REST-Experte, also warten wir auf die Antworten/Kommentare von anderen – BackSlash

Antwort

1

Wenn alles, was Sie tun, ist Validierung, dann denke ich, sollten Sie senden 422 durch Validierungsfehler und 200 durch Validierung erfolgreich. Der POST bedeutet nicht, dass Sie immer eine neue Entität erstellen müssen.

Die von der POST-Methode ausgeführte Aktion führt möglicherweise nicht zu einer -Ressource, die durch einen URI identifiziert werden kann. In diesem Fall ist entweder (OK) oder 204 (Kein Inhalt) der geeignete Antwortstatus, abhängig davon, ob die Antwort eine Entität enthält, die das Ergebnis beschreibt.

Wenn eine Ressource auf dem Ursprungsserver erstellt wurde, die Antwort sollte 201 sein (Erstellt) und eine Einheit enthalten, die den Status der Anfrage beschreibt und bezieht sich auf die neue Ressource, und einen Ort Header (siehe Abschnitt 14.30).

1

Ich ziehe google's api error response style bin.

So sendet mein Dienstfehler Antwort als json oder xml und 400 Bad request Fehlercode:

{ 
    "status": "INVALID_REQUEST", 
    "type": "ERROR_MSG", 
    "data": { 
    "request": "/v2/data?age=23d", 
    "errors": [ 
     "age: not a number" 
    ] 
    }, 
    "time": -1 
} 

sonst 200 und entsprechende Meldung