2012-11-26 7 views
14

Diciamo che ho una risorsa articles a /articles.Quale codice HTTP da utilizzare per una sottorisorsa vuota in un'API REST?

Questi articoli potrebbero avere articoli correlati, quindi li prendo da GETting /articles/{id}/related.

Cosa devo restituire se non ci sono articoli correlati?

mi viene in mente:

  • 404 Not Found, magari con un insieme vuoto
  • 204 No Content
  • 200 Found con un insieme vuoto

Eventuali consigli? (Si prega di fornire argomenti)

A proposito, può essere applicato all'impaginazione. Se richiedo la pagina 3 di 2, la pagina 3 restituirà un set vuoto, dovrebbe essere un 404?

risposta

6

Non vorrei usare 404 - questo direbbe al client "Non sono in grado di dirti se ci sono articoli collegati" ". Sarebbe appropriato se il {id} dato non viene riconosciuto affatto. Quello che vuoi è una risposta positiva per dire al cliente, sì, una buona domanda, ed ecco la (vuota) lista di articoli correlati.

204 non va bene, per ragioni correlate. Ha specificato che non è la risposta, che è ancora diversa da una risposta che è ma è la lista vuota. La sua descrizione ha più senso per un POST che per un GET.

200 con una lista vuota è giusto.

14

404 non è quello che stai cercando. È una condizione di errore. Il tuo caso non è un errore. Al momento il cliente non sa se ci sono articoli correlati e vuole sapere. Questo non è un errore.

204 non è appropriato. RFC 2616 afferma:

The server has fulfilled the request but does not need to return an 
    entity-body, and might want to return updated metainformation. The 
    response MAY include new or updated metainformation in the form of 
    entity-headers, which if present SHOULD be associated with the 
    requested variant. 

204 non specifica che non ci sono articoli correlati. Dice solo che il server non ha bisogno di inviare i dati.

200 con la raccolta vuota d'altra parte soddisferebbe il vostro bisogno.

+0

200 è una buona corrispondenza, ma stare lontano da '200 trovato' dal momento che _302 Found_ esiste già. –

4

Restituisce 200 con un array vuoto.

Problemi correlati