2016-05-23 6 views
5

Angenommen, mein Server legt Ressourcen mit einem Status offen (Not approved, Approved, Auto-approved). Wenn sich eine Ressource im Zustand Not approved befindet, sollte sie für Clients nicht zugänglich sein, d. H. Clients dürfen über die Existenz der Ressource Bescheid wissen (sie tun es trotzdem), sollten jedoch den Zugriff verweigern, bis die Ressource im korrekten Zustand ist.REST: Ressource im falschen Zustand - Welchen HTTP-Status sollte ich zurückgeben?

Der HTTP-Statuscode sollte in etwa wie folgt lauten: "Ja, die Ressource, auf die Sie zugreifen möchten, existiert, Sie müssen jedoch warten, bis sie von jemandem genehmigt wird. Bitte versuchen Sie es später erneut."

Welcher HTTP-Statuscode sollte in diesem Fall zurückgegeben werden? Die Rückkehr 404 (Not found) scheint nicht richtig, weil die Ressource tatsächlich existiert. Statuscode 412 (Precondition failed) klingt ungefähr richtig, aber the RFC spricht viel über HTTP-Header ...

Die 412 (Vorbedingung fehlgeschlagen) Statuscode gibt an, dass eine oder mehr gegebenen Bedingungen in den Request-Header Felder falsch ausgewertet, wenn auf dem Server getestet. Mit diesem Antwortcode kann der Client Vorbedingungen für den aktuellen Ressourcenstatus (seine aktuellen Darstellungen und Metadaten) festlegen und somit verhindern, dass die Anforderungsmethode angewendet wird, wenn sich die Zielressource in einem unerwarteten Zustand befindet.

+2

Bitte präzisieren Sie die Bedeutung von "sollte nicht für Kunden zugänglich sein". Sollten die Kunden wissen dürfen, dass die Ressource existiert? –

+1

@DisplayName, danke. Ich habe die Frage aktualisiert. –

Antwort

4

Die Bedingungen in den Beschreibungen erwähnt beziehen sich auf HTTP-Header wie If-Match, If-Modified-Since, If-None-Match, If-Range oder If-Unmodified-Since so die Verwendung von 412 in Ihrem Fall nicht angemessen wäre.

Ich denke, es ist bis zu Ihrer Interpretation, wenn Not approved Ressourcen einfach nicht verfügbar sind 404, beschränkt auf bestimmte Benutzer oder 403423 gesperrt.

Ich würde sagen, in Ihrem Fall 423 (Locked) (bis zur Genehmigung) wäre die richtige Antwort.

Verwandte Themen