Ich habe eine Anwendung, die Nachrichten an Benutzer sendet. In einer Post-Anfrage wird eine XML-Zeichenfolge übertragen, die aus allen Benutzern besteht, die diese bestimmte Nachricht erhalten sollen. Wenn einer der Benutzer in der Liste nicht vorhanden ist, gebe ich die Liste der vermissten Benutzer zur weiteren Auswertung an den Client zurück.
Jetzt frage ich mich, was der richtige Statuscode für die Anwendung wäre, der besagt, dass die Anfrage angenommen wurde, aber es gab Dinge, die nicht getan werden konnten.
Das Problem würde vermieden, wenn fehlende Benutzer nicht in die Liste aufgenommen würden. Dann würde der Sendeversuch nur einen 4xx-Fehler erhalten. Es macht jedoch keinen Sinn, die API auf diese Weise zu erstellen. Andererseits könnte ich die Fehlerbedingung als rein anwendungsspezifisch betrachten. Aber eine 200 zu senden fühlt sich einfach nicht richtig an. Und es wäre schön, dem Kunden einen Hinweis zu geben, wann er tief in die Fehlerantwort schauen soll. zB um zu vermeiden, dass Nachrichten immer wieder an diese Benutzer gesendet werden
quelle
Ich hatte das gleiche Problem und habe am Ende zwei verschiedene Lösungen verwendet:
202: Accepted
, der angibt, dass die Anfrage in Ordnung war, aber es gibt keine Garantie dafür, dass tatsächlich alles so lief, wie es sollte.200
in der Antwort einen Normalwert zurück, fügen Sie jedoch eine Liste der Elemente hinzu, die nicht im Antworttext enthalten sind.Der zweite funktioniert normalerweise am besten, aber der erste ist großartig, wenn Sie faul sind oder eine Warteschlange für die Verarbeitung verwenden.
quelle
Was ist mit der Verwendung von 206 Teilinhalten? Ich weiß, bei 206 geht es mehr um Bereiche, aber was ist, wenn dies auf eine teilweise erfolgreiche Anforderung hinweisen könnte?
quelle
Das HyperText-Übertragungsprotokoll befasst sich mit der Übertragungsseite der Dinge. Es gibt keine Fehlercodes für Fehler auf Anwendungsebene.
Die Rückgabe von 200 ist hier das Richtige. In Bezug auf HTTP wurde die Anfrage ordnungsgemäß empfangen, ordnungsgemäß verarbeitet und Sie senden die Antwort zurück. Auf HTTP-Ebene ist also alles in Ordnung. Alle Fehler oder Warnungen in Bezug auf die Anwendung, die über http ausgeführt wird, sollten in der Antwort enthalten sein. Auf diese Weise werden auch einige unangenehme Probleme vermieden, die bei Proxyservern auftreten können, bei denen bestimmte Antworten möglicherweise nicht wie erwartet verarbeitet werden.
quelle