2017-06-06 3 views
0

(Diese Art einer abstrakten philosophischen Frage. Aber ich glaube, dass es Ziel, konkrete Antworten hat.)API Statusseite Response Codes

ich eine API ich schreibe, meine API hat einen „Status“ Seite (wie, https://status.github.com/).

Wenn die Logik, die ich habe, um den Status festzustellen, alles gut ist, würde mein Plan 200 OK und eine JSON-Antwort mit mehr Informationen über jeden von meiner Statusseite getesteten Dienst zurückgeben.

Aber was, wenn meine Logik sagt, dass die API nicht aktiv ist? Angenommen, die Datenbank reagiert nicht oder so.

Ich denke, ich möchte 500 INTERNAL SERVER ERROR (oder 503 SERVICE NOT AVAILABLE) zusammen mit einer JSON-Antwort mit mehr Details zurückgeben.

Allerdings, bricht das die HTTP-Statuscode-Spezifikation? Würde das die Endbenutzer verwirren? Meine Statusseite selbst funktioniert in diesem Fall gut. Also vielleicht sollte es 200 zurückgeben? Aber das würde bedeuten, dass jeder, der es benutzt, in den Körper graben muss, um nach einem bestimmten Parameter zu suchen, um den Status der API zu bestimmen, anstatt nur den HTTP Status Code zu überprüfen. (Auch wenn meine Statusseite selbst defekt war, geht es mir gut, dass der Endanwender meint, dass die API down ist, da das ein ziemlich schlechtes Zeichen ist ...)

Gedanken? Gibt es ein offizielles Protokoll darüber, wie eine Statusseite funktionieren sollte?

https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

Antwort

1

Für mich sollte die Seite 200 zurück, wenn Probleme selbst hat. Es ist wahr, dass es einfacher ist, den Statuscode einer Antwort zu prüfen als das Parsen, aber das Verwenden von HTTP-Statuscodes zum Kodieren von Anwendungsinformationen bricht ab, was Menschen (und Spinnen) erwarten. Wenn eine Spinne Ihre Seite passiert und eine 500 oder 503 sieht, dass Ihre Seite eine Seite mit Problemen hat, ist diese Seite nicht in Ordnung und signalisiert, dass die Seite nicht erreichbar ist.

Auch, wie Sie bemerken, es wird nicht‘möglich sein, zwischen der Dienst zu unterscheiden ist nach unten und die Statusseite nach unten Fällen mit dem letzten den einzigen, den 500 senden soll. Was passiert, wenn Sie mehr als einen Dienst wie den twitter status page zeigen? Verwenden Sie 200.

Verwandte: https://stackoverflow.com/a/943021/1536382https://stackoverflow.com/a/34324179/1536382

+0

Vielen Dank für diese, +1, wenn kein anderes mit einem Gegenargument Chimes in Ich werde markieren diese akzeptiert. – lostphilosopher

Verwandte Themen