Quando una richiesta API Cloud IoT Core di Google Cloud ha esito positivo, l'API restituisce un codice di stato 200 OK
HTTP insieme ai dati richiesti nel corpo della risposta.
Quando una richiesta non va a buon fine, l'API Cloud IoT Core restituisce un codice di stato HTTP 4xx
o 5xx
che identifica in modo generico l'errore, oltre a una risposta che fornisce informazioni più specifiche sull'errore che ha causato l'errore.
Nella parte restante di questa pagina viene descritta la struttura di un errore, vengono elencati specifici codici di errore e viene consigliato come gestirli.
Le risposte agli errori per le richieste JSON hanno la seguente struttura:
{ "error": { "code": "integer", "message": "string", "status": "string", "details": array } }
L'oggetto di risposta contiene un singolo campo error
il cui valore contiene i seguenti
elementi:
Elemento | Descrizione |
---|---|
code |
Un codice di stato HTTP che identifica in modo generico l'errore della richiesta. |
message |
Informazioni specifiche di Cloud IoT Core sull'errore della richiesta. |
status |
Il codice di errore canonico (google.rpc.Code ) per le API di Google. I codici che possono essere restituiti dall'API Cloud IoT Core sono elencati in Codici di errore. |
details |
Informazioni aggiuntive, come il tipo di errore e/o una descrizione più dettagliata della causa. |
L'esempio seguente mostra una risposta di errore. È stato restituito l'errore perché la richiesta, in questo caso devices.publishEvent
, conteneva un payload non valido:
{ "error": { "code": 400, "message": "Invalid value at 'binary_data' (TYPE_BYTES), Base64 decoding failed for \"123\"", "status": "INVALID_ARGUMENT", "details": [ { "@type": "type.googleapis.com/google.rpc.BadRequest", "fieldViolations": [ { "field": "binary_data", "description": "Invalid value at 'binary_data' (TYPE_BYTES), Base64 decoding failed for \"123\"" } ] } ] } }
Codici e gestione degli errori
Il metodo consigliato per classificare gli errori è esaminando il valore del codice di errore canonico (google.rpc.Code
). Negli errori JSON, il codice viene visualizzato nel campo status
. In errori application/x-protobuf
, si trova nel campo code
. Per molti errori, l'azione consigliata è tentare nuovamente la richiesta utilizzando il backoff esponenziale. Per informazioni su come implementare il backoff esponenziale in Cloud IoT Core, vedi Implementare il backoff esponenziale.
Codice di errore canonico | Descrizione | Azione consigliata |
---|---|---|
ABORTED |
La richiesta era in conflitto con un'altra richiesta. | Riprova utilizzando il backoff esponenziale. |
ALREADY_EXISTS |
La richiesta ha tentato di creare un'entità già esistente. | Non riprovare senza risolvere il problema. |
CANCELLED |
L'operazione è stata annullata, probabilmente dal chiamante. | Riprova utilizzando il backoff esponenziale. |
DEADLINE_EXCEEDED |
È stata superata una scadenza sul server. | Riprova utilizzando il backoff esponenziale. |
FAILED_PRECONDITION |
Una condizione per la richiesta non è stata soddisfatta. Il campo del messaggio nella risposta di errore fornisce informazioni sulla condizione preliminare che non è riuscita. | Non riprovare senza risolvere il problema. |
INTERNAL |
Il server ha restituito un errore. | Riprova utilizzando il backoff esponenziale. |
INVALID_ARGUMENT |
Il client ha specificato un argomento non valido. | Non riprovare senza risolvere il problema. |
NOT_FOUND |
La richiesta è stata tentata su un'entità che non esiste. | Non riprovare senza risolvere il problema. |
OUT_OF_RANGE |
La richiesta ha superato l'intervallo valido. | Non riprovare senza risolvere il problema. |
PERMISSION_DENIED |
L'utente non era autorizzato a inviare la richiesta. Per evitare di rivelare l'esistenza di risorse, se l'utente effettua una richiesta non autorizzata su un'entità che non esiste, viene restituito questo errore anziché NOT_FOUND . |
Non riprovare senza risolvere il problema. |
RESOURCE_EXHAUSTED |
Quota di risorse esaurita o vicina alla limitazione della frequenza. Per ulteriori informazioni, consulta l'articolo Applicazione della quota. | Non riprovare senza risolvere il problema. |
UNAVAILABLE |
Il server ha restituito un errore. | Riprova utilizzando il backoff esponenziale. |
UNIMPLEMENTED |
L'operazione non è implementata o non è supportata nell'API Cloud IoT Core. | Non riprovare. |
UNKNOWN |
Errore sconosciuto. | Riprova utilizzando il backoff esponenziale. |