2013-06-05 4 views
11

Sto cercando un codice di stato corretto per inviare un errore gnerale attraverso un'API.Codice di stato HTTP per errore generico

Lo scenario esatto non riesce ad aggiungere un prodotto a un carrello.

L'errore può verificarsi per un numero elevato di motivi, ma vorrei restituire un singolo codice http.

Quale sarebbe la migliore?

Sono stato a guardare attraverso di loro e non vedo nulla che si adatta esattamente alle esigenze qui.

Alcune delle possibili condizioni di guasto potrebbe essere:

Not enough stock to satisfy 
Stock limit reached for that particular product 
Product no longer available 
+0

Probabilmente si desidera un HTTP 400. Vedere http://stackoverflow.com/questions/1959947/whats-an-appropriate-http-status-code-to-return-by-a-rest-api-service-for -a-val – lreeder

+1

Inoltre, leggi questa bozza IETF: http://www.ietf.org/id/draft-nottingham-http-problem-04.txt –

risposta

11

Se si tratta di errore del server, allora dovrebbe essere 500. Se si tratta di errori client, utilizzare 400.

E 'difficile essere più precisa di quella senza vedere l'URI e cosa fai con esso. Ad esempio, se "Prodotto non più disponibile" è un risultato della richiesta GET, allora dovrebbe essere 404 (non trovato). Ma se era una richiesta POST, allora dovrebbe essere 200 o 202.

Per gli altri due, potrebbero non essere errori. Potrebbe essere che il client abbia inviato la richiesta corretta ma lo stock è stato consumato da qualcun altro, in questo caso il server dovrebbe restituire 409 (conflitto). Se la richiesta riguardava troppo stock dall'inizio, allora dovrebbe essere solo 200/202.

Se fosse necessario un solo codice, utilizzare solo 400 e 200 (vedere sopra).

+0

Ho aggiornato la domanda con errori di esempio. Potrebbero andare meglio con 400 ma non sembra ancora giusto –

+0

@MartyWallace Ho aggiornato la mia risposta. – imel96