Ich erstelle eine RESTful-API, die eine Reihe von Benutzerinteraktionen verarbeitet, einschließlich der Bestellung mit gespeicherten Kreditkarten.
Im Falle einer erfolgreichen Bestellung gebe ich ein 200 OK zurück, und in dem Fall, in dem die Bestellanforderung fehlerhaft oder ungültig ist, gebe ich eine 400 Bad Request zurück. Aber was soll ich zurückgeben, wenn bei der tatsächlichen Bearbeitung der Bestellung ein Problem auftritt?
- Client-POSTS-Bestellung an den Server für eine Benutzerressource. Wenn der Benutzer nicht vorhanden ist, wird 404 Not Found zurückgegeben.
- Bestellformat und Informationen werden validiert. Wenn nicht gültig, wird 400 Bad Request zurückgegeben.
- Bestellung wird bearbeitet. Wenn die Bestellung erfolgreich ist, wird ein 201 Created für die Bestellung zurückgegeben. Wenn ein unerwarteter Fehler auftritt, wird ein 500-Server-Fehler zurückgegeben.
Der letzte Schritt ist das Problem - was kann ich zurückgeben, wenn die Bestellung aus einem anderen Grund nicht abgeschlossen wird? Mögliche Szenarien könnten sein:
- Produkt ist ausverkauft
- Maximales Bestelllimit des Benutzers erreicht
- Fehler bei Kreditkartentransaktionen (unzureichendes Guthaben usw.)
Dies scheint weder für eine 400 noch für eine 500 angemessen zu sein. Wenn ich keinen besseren Code finden könnte, wäre die Anfrage gemäß den Geschäftsregeln ungültig. Es scheint einfach nicht genau zu sein.
Bearbeiten: Auch diese vorhandene Diskussion zum gleichen Thema gefunden. Alle Antworten dort scheinen darauf hinzudeuten, Statuscodes für diese Art von Verletzung zu verwenden, wobei einige Diskussionen zwischen der Verwendung von 400, 409 oder der Erweiterung 422 geführt werden.