Sagen Sie, dass der Client die folgende URL anfordert:
%Vor% Wenn /user-details
eine nicht vorhandene Ressource war, wäre der korrekte Statuscode offensichtlich 404
.
Wenn jedoch /user-details
existiert, aber kein Benutzer mit der ID 123
existiert:
404 Not Found
zurückgegeben, aber die Erfahrung hat mir gezeigt, dass es verwirrend ist, nicht zu wissen, ob es die Ressource oder die Entität ist das wurde nicht gefunden; 400 Bad Request
in Erwägung gezogen, aber ich finde es auch verwirrend, da die Anfrage technisch korrekt ist und nur eine nicht existierende Entität anfordert. Gibt es einen geeigneteren HTTP-Statuscode für diesen Zweck?
Das 404 ist in Ordnung, weil die Benutzerdetails-Ressource eine konzeptionelle Zuordnung zu der Benutzerentität in diesem Fall zu einer partiellen Benutzerressourceninformation ist.
Die GET-Methode für Benutzerdetails ist daher nicht dafür verantwortlich, von den beiden Fällen zu unterscheiden: a) Der Benutzer existiert nicht, b) Die Benutzerdetails existieren nicht.
Ich würde den Endpunkt jedoch wie folgt umschreiben:
%Vor%Was meiner Meinung nach ausdrucksstärker ist.
Der Parameter user
ist Teil der Ressourcen-ID, wie in RFC 3986, Abschnitt 3.4 angegeben :
Die Abfragekomponente enthält nicht hierarchische Daten, die zusammen mit Daten in der Pfadkomponente (Abschnitt 3.3) dienen zur Identifizierung eines Ressource im Rahmen des URI-Schemas und der Namensberechtigung
Daher ist 404/Not found
völlig in Ordnung.
Tags und Links http http-status-codes