Wir entwickeln eine RESTful-API, um Sammlungen von Dokumenten zurückzugeben. Unsere erste Implementierung verwendet HTTP-Statuscodes, um anzugeben, ob eine Anfrage nicht erfüllt werden konnte. Dies scheint eine allgemein akzeptierte Best Practice zu sein (siehe zum Beispiel here).Wie sollten Ausnahmen in einer RESTful API für Collection-Ergebnisse behandelt werden?
Wir sind kürzlich auf ein Problem gestoßen, bei dem ein Benutzer 1000 Dokumente abgerufen hat. Eines der Dokumentabrufvorgänge ist fehlgeschlagen, und daher haben wir einen HTTP 500-Statuscode zurückgegeben.
Eine Alternative wäre, einen HTTP 200-Statuscode mit der Nutzlast zurückzugeben, die die 999 Dokumente enthält, die wir abrufen konnten, und dann eine Fehlerauflistung, die die fehlgeschlagene angibt.
Ist dieser alternative Ansatz eine Verletzung der RESTful-Prinzipien? Wie soll diese Situation gehandhabt werden? Gibt es neben diesen beiden Ansätzen noch weitere Möglichkeiten?
Danke Vivin für den Eingang. Ich denke also, eine mögliche Trennungslinie ist, wenn die Situation als "außergewöhnlich" betrachtet wird oder nicht. Wenn dies der Fall ist, sollte ein HTTP 500-Status zurückgegeben werden. Wenn die Situation keine Ausnahme ist und im Rahmen der normalen Verwendung der API regelmäßig auftreten kann, dann ist vielleicht ein HTTP 200 geeigneter, da die Fehlerinformationen im (gut dokumentierten!) Nutzlast-Inhalt gesendet werden. –
@JoeAlfano Korrigieren. Wenn es sich um eine * tatsächliche * Ausnahme handelt, von der der Benutzer nicht wirklich wiederherstellen kann, ist HTTP 500 in Ordnung. Andernfalls können Sie die Teildaten, die Sie haben, zusammen mit den Fehlern angeben, und der Benutzer kann entscheiden, wie er damit umgehen soll. –