API RESTful: dovrei usare lo stato HTTP + corpo del messaggio o i miei codici di errore nel corpo?

-1

Devo utilizzare lo stato HTTP + il corpo del messaggio per un errore o il mio insieme di codici di errore?

Ad esempio, questa è una richiesta:

{
    "number": 8
}

E queste sono due risposte possibili:

HTTP status: 400 Bad Request
Body:
{
    "error": "expecting an odd number"
}

o

HTTP status: 200 OK
Body:
{
    "success": false,
    "error": <enum value that represents the error, or a string>
}
    
posta J. Doe 26.04.2018 - 19:24
fonte

1 risposta

2

It depends

Una cosa importante da riconoscere è che il codice di stato, così come le intestazioni, sono metadati che hanno significato per i componenti generici che partecipano allo scambio di messaggi. Non sono realmente destinati al consumatore finale.

Una delle differenze chiave tra 2xx e 4xx è l'effetto che ha sulle cache. RFC 7234 spiega

A cache MUST invalidate the effective Request URI (Section 5.5 of [RFC7230]) as well as the URI(s) in the Location and Content-Location response header fields (if present) when a non-error status code is received in response to an unsafe request method.

PUT, POST, PATCH sono tutti non sicuri .

Le cache (e altri componenti intermedi) non dovrebbero scavare nel corpo della risposta per capire cosa sta succedendo - il server di origine dovrebbe mettere tutti i suggerimenti necessari nella riga di stato e nelle intestazioni.

Quindi, per questo caso, una delle dimensioni di "dipende" dipende dal fatto che si desideri che le cache non invalidi le rappresentazioni della risorsa.

    
risposta data 26.04.2018 - 21:17
fonte

Leggi altre domande sui tag