Ich arbeite mit einer REST-API, die sich auf einem Server befindet, der Daten für eine Vielzahl von IoT-Geräten verarbeitet.
Meine Aufgabe ist es, den Server mithilfe der API abzufragen, um bestimmte Leistungsinformationen zu diesen Geräten zu erfassen.
In einem Fall erhalte ich eine Liste der verfügbaren Geräte und ihrer entsprechenden IDs und frage später den Server nach weiteren Details unter Verwendung dieser IDs (GUIDs) ab.
Der Server gibt 500 Internal Server Error
eine Abfrage für eine dieser IDs zurück. In meiner Anwendung wird eine Ausnahme ausgelöst und es werden keine Details zu dem Fehler angezeigt. Wenn ich die Antwort genauer mit Postman untersuche , kann ich feststellen, dass der Server JSON in dem Body zurückgegeben hat, der Folgendes enthält:
errorMessage: "This ID does not exist"
.
Ignorieren Sie zunächst die Tatsache, dass der Server die ID angegeben hat - dies ist ein separates Problem für den Entwickler.
Sollte eine REST-API ein zurückgeben, um 500 Internal Server Error
zu melden, dass eine Abfrage auf ein nicht vorhandenes Objekt verweist? Meines Erachtens sollten sich die HTTP-Antwortcodes ausschließlich auf den Status des REST-Aufrufs und nicht auf die internen Mechanismen der API beziehen. Ich würde eine 200 OK
Antwort mit dem Fehler und der Beschreibung erwarten , die Eigentum der betreffenden API wäre.
Ich habe den Eindruck, dass es je nach Struktur des REST-Aufrufs einen potenziellen Unterschied in der Erwartung gibt.
Betrachten Sie diese Beispiele:
http://example.com/restapi/deviceinfo?id=123
http://example.com/restapi/device/123/info
Im ersten Fall wird die Geräte-ID als GET-Variable übergeben. Ein 404 oder 500 würde anzeigen, dass der Pfad ( /restapi/deviceinfo
) entweder nicht gefunden wurde oder zu einem Serverfehler führte.
Im zweiten Fall ist die Geräte-ID Teil der URL. Ich würde ein besseres Verständnis haben 404 Not Found
, könnte aber trotzdem darüber streiten, welche Teile des Pfades als Variablen gegenüber Endpunkten interpretiert werden.