Korrigiere HTTP-Statuscode für existierende Ressource, aber nicht existente Entität?

8

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:

  • Ich habe bisher 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;
  • Ich habe die Verwendung von 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?

    
Benjamin 04.01.2014, 15:01
quelle

4 Antworten

4

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.

    
raspacorp 20.05.2015 18:53
quelle
3

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.

    
DaSourcerer 04.01.2014 17:58
quelle
2

Versuchen Sie 422, das in WebDav verwendet wird? Siehe Ссылка

Für mich ist 404-Status auch in Ordnung (besser eigentlich normiert), 400 ist zu vage.

    
cubitouch 04.01.2014 15:09
quelle
-3

Obwohl technisch das 404-Verfahren in Ordnung ist, würde ich aus Sicht der Benutzererfahrung 200 zurückgeben und eine benutzerfreundlichere Nachricht bereitstellen, die besagt, dass der Benutzer versucht hat, auf eine Nicht-Existenzeinheit zuzugreifen.

    
Wins 04.01.2014 21:01
quelle

Tags und Links