Unter Verwendung von REST-Prinzipien wird 404 verwendet, um anzuzeigen, dass eine Entität nicht existiert. Wie können Clients diesen Fall jedoch davon unterscheiden, einen falschen Endpunkt zu treffen?
Ich möchte unterscheiden zwischen "Sie kamen zum richtigen Endpunkt, aber diese Entität existiert nicht" und "Sie sind nicht am richtigen Endpunkt". Technisch kann dies unter Verwendung anderer Antwortcodes, benutzerdefinierter Kopfzeilen usw. unterschieden werden, aber ich beschäftige mich hauptsächlich mit REST-Best-Practices in diesem Bereich, so dass Clients so einfach und standard wie möglich sind.
Du bist zum richtigen Endpunkt gekommen, aber diese Entität existiert nicht
Wenn die URL keine Ressource identifiziert, wie könnte sie der richtige Endpunkt sein? Das einzige mögliche Szenario, an das ich denken könnte, ist, dass die Entität gelöscht wurde. In diesem Fall ist 410 Gone die richtige Antwort.
Denken Sie daran, dass, wenn Sie REST-konforme Prinzipien befolgen, die URL vom Server bereitgestellt wurde und wenn ja, warum gibt der Server ungültige URLs aus?
Ich glaube, dass die Bestimmung des korrekten Endpunkts in der alleinigen Verantwortung des REST-Clients liegt. (Natürlich könnte ein Endpunktauflösungsdienst einfach implementiert werden.) Ein 404-Fehler bedeutet nur, dass dieser bestimmte Endpunkt diese bestimmte Entität nicht hostet.
Nichts in RESTful Design erfordert, dass ein Server weiß, ob ein Client mit dem "richtigen" Host interagiert.
Unter der Annahme eines solchen Rahmens:
%Vor%
Wenn Sie meinen, dass Sie in der Lage sein möchten, zwischen jemandem zu unterscheiden, der auf /object/members/attributes/incorrect_attribute
trifft
(Ein 404 alle richtigen Befehle verwenden, aber versuchen, eine nicht vorhandene Ressource abzurufen)
und jemand trifft /object/members/big-bird
(Angenommen, members
kann kein gültiger Endpunkt sein
[und dass /object/members/attributes
auch kein gültiger Endpunkt ist])
dann glaube ich, dass Sie entweder einen 501 Fehler (nicht implementiert) oder einen 403 Fehler (Forbidden) zurückgeben können, je nachdem, wo Sie die Schuld vergeben wollten. (Alternativ ist 418 (Ich bin eine Teekanne) ist auch hier gültig).
BEARBEITEN:
Schließlich, wenn attribute_n
verwendet zu existieren und nicht mehr, könnten Sie mit einer 410 (Ressource weg) antworten.
Siehe: Ссылка
Tags und Links rest