Riposante codici di risposta HTTP
Domanda
Sto sviluppando una semplice API RESTful, e assolutamente in amore con il modo minimalista è.Ma io sono incerto sul corretto codici di risposta HTTP per le varie situazioni:
Di un formato non corretto query
Query correttamente formata, si riferisce a una risorsa che non esiste
Risorsa eliminato con successo
Risorse stato modificato
Attualmente sto pensando che sarebbe 1 403 Forbidden
;2 sarebbe 410 Gone
;3 e 4 sarebbe 202 Accepted
.Suonano giusto?
Soluzione
Per #1, 403 suggerisce l'applicazione capito la richiesta, ma non adempiere ad essa (es.utente corrente non ha il permesso di farlo per qualche motivo).Penso che 400 bad request potrebbe avere più senso in questo caso.
Per #2 - penso 404 avrebbe più senso cioèla risorsa non viene trovato, a meno che il la risorsa ha fatto esistere a un certo punto, e poi è stato eliminato, nel qual caso 410 sarebbe giusto - ma non sono molti i clienti sanno cosa fare con 410.
Per #3 & #4 - 200 se trattati l'eliminazione di successo, 202, se la cancellazione è in coda e saranno trattati presso una data successiva di "fuori banda".
RFC 2616 fornisce grandi spiegazioni del significato di ogni codice di risposta di mezzi abbastanza comprensibile.
Altri suggerimenti
- 400
- 404
- 200
- 200
- 201 - risorsa creato con successo
1).400 - standard bad request, 403 significa che la richiesta è formattato correttamente, ma non è consentito l'accesso
2).404 - 410 implica che la risorsa esisteva, ma è stato volutamente spostato
3).e 4).200 se l'azione è avvenuto con successo dal momento in cui si invia la risposta, 202, se l'azione è in corso.In pratica 202 è probabile che per eliminare le azioni (in cui potrebbero essere soggette a revisione), ma si può o non desidera restituire immediatamente un 200 comunque così sembra effettivamente cancellati per l'utente.Che è una questione di design imho.
Ottenere i Richardson & Ruby libro - ha un'utile appendice sulla tua domanda e, è necessario leggere in entrambi i modi
perché non usare lo standard codici di risposta http .Si dovrebbe ottenere tutte le ottimizzazioni ( per ex, 303, 304 )/ infrastrutturali per l'http per libero .