2016-05-23 13 views
5

Presuppone che il server esponga risorse con stato (Not approved, Approved, Auto-approved). Se una risorsa è nello stato Not approved, non dovrebbe essere accessibile ai client, ad esempio i clienti sono autorizzati a conoscere l'esistenza della risorsa (lo fanno comunque), ma deve essere negato l'accesso finché la risorsa non si trova nello stato corretto.REST: risorsa in stato errato - quale stato HTTP dovrei restituire?

Il codice di stato HTTP dovrebbe esprimere qualcosa in questo modo: "Sì, la risorsa a cui stai tentando di accedere esiste, ma dovrai attendere che venga approvata da qualcuno. Riprova più tardi."

Quale codice di stato HTTP deve essere restituito in questo caso? Restituire 404 (Not found) non sembra giusto, perché la risorsa è in effetti esistente. Codice di stato 412 (Precondition failed) suona circa la destra, ma the RFC parla molto di intestazioni HTTP ...

Il 412 (Precondizione fallita) codice di stato indica che uno o più condizioni date nei campi richiesta header è risultata falsa quando testato sul server. Questo codice di risposta consente al client di porre precondizioni allo stato della risorsa corrente (le sue attuali rappresentazioni e metadati ) e, quindi, impedire l'applicazione del metodo di richiesta se la risorsa di destinazione si trova in uno stato imprevisto.

+2

Si prega di essere più specifici sul significato di "non dovrebbe essere accessibile ai clienti". I clienti dovrebbero sapere che la risorsa esiste? –

+1

@DisplayName, grazie. Ho aggiornato la domanda. –

risposta

4

Le condizioni indicati nel testo si riferiscono alle intestazioni HTTP come If-Match, If-Modified-Since, If-None-Match, If-Range o If-Unmodified-Since quindi l'uso di 412 non sarebbe appropriato nel tuo caso.

penso che sia fino a vostra interpretazione se Not approved risorse sono semplicemente non disponibili 404, limitato a determinati utenti 403 o bloccati 423.

Direi nel tuo caso 423 (Locked) (fino all'approvazione) sarebbe la risposta corretta.

Problemi correlati