Risoluzione dei problemi dell'API Looker

Questa pagina descrive le procedure di risoluzione dei problemi che potresti riscontrare con l'API Looker:

L'endpoint API non è raggiungibile

Se non riesci a raggiungere un endpoint API:

Verifica le credenziali API

Se l'endpoint dell'API Looker non è raggiungibile, verifica prima che le credenziali API siano corrette. Per visualizzare le credenziali dell'API:

  1. In Looker, accedi al pannello Amministrazione selezionando l'opzione Amministratore nel pannello di navigazione a sinistra.
  2. Nel riquadro a sinistra della pagina Amministrazione, scorri verso il basso e fai clic su Utenti.
  3. Cerca il tuo nome utente nell'elenco utenti e selezionalo per modificare la pagina utente.
  4. Fai clic su Modifica chiavi API. Puoi vedere il Client-ID e fare clic sull'icona a forma di occhio per visualizzare il Client Secret per ogni chiave API che hai configurato. Verifica che le credenziali dell'API corrispondano a quelle che utilizzi nello script.

Verifica l'URL dell'API

Un altro problema comune che si verifica quando si raggiunge un endpoint API è l'errato URL dell'host dell'API. La maggior parte delle istanze di Looker utilizza l'URL predefinito per l'API. Tuttavia, le installazioni di Looker che utilizzano un percorso API alternativo o le installazioni di Looker situate dietro un bilanciatore del carico (ad esempio la configurazione di un cluster) o qualsiasi altro proxy potrebbero non utilizzare l'URL predefinito. In questo caso, l'URL host dell'API deve indicare la porta e il nome host dell'API rivolti agli utenti.

Gli amministratori di Looker possono visualizzare l'URL dell'host dell'API nelle impostazioni di amministrazione delle API (descritte in modo più dettagliato nella pagina della documentazione Impostazioni amministratore - API). Per visualizzare l'URL dell'host dell'API:

  1. Accedi al pannello Amministrazione selezionando l'opzione Amministrazione nel pannello di navigazione a sinistra.
  2. Fai clic su API nel riquadro Amministrazione.
  3. Visualizza l'URL dell'host dell'API.

    Se il campo URL host API è vuoto, l'istanza di Looker utilizza il formato predefinito, ovvero:

    https://<instance_name>.cloud.looker.com:<port>
    

Per testare l'URL host API:

  1. Apri il browser, quindi apri la console del browser.
  2. Inserisci l'URL host API seguito da /alive. Ad esempio, se l'URL dell'host dell'API è https://company.cloud.looker.com, inserisci:

    https://company.cloud.looker.com/alive
    

    Se il campo URL host API è vuoto, utilizza l'URL predefinito dell'API. Ad esempio, per le istanze ospitate su Google Cloud, Microsoft Azure e quelle ospitate su Amazon Web Services (AWS) create a partire dal 07/07/2020, il percorso predefinito dell'API Looker utilizza la porta 443:

    https://<instance_name>.cloud.looker.com:443/alive
    

    Per le istanze ospitate su AWS create prima del 7/07/2020, il percorso dell'API Looker predefinito utilizza la porta 19999:

    https://<instance_name>.cloud.looker.com:19999/alive
    

Se l'URL dell'host dell'API è corretto, questo URL restituirà una pagina web vuota, non una pagina di errore.

Puoi anche verificare di aver raggiunto l'API osservando la risposta della rete nella console del browser. La risposta della rete deve essere 200.

Se questi controlli non vanno a buon fine, il problema potrebbe essere dovuto al fatto che stai chiamando l'API in modo errato o che siano presenti altri errori nel codice. Controlla le chiamate API e il codice nello script. Se sono corrette, consulta la sezione successiva relativa alla verifica del trasferimento.

Verifica la porta API

Se i controlli precedenti non vanno a buon fine e hai un deployment di Looker ospitato dal cliente, è possibile che la porta API debba essere aperta nell'infrastruttura di rete.

La porta dell'API deve eseguire l'inoltro al server Looker. Per i deployment di Looker ospitati dal cliente, chiedi all'amministratore di rete di controllare le impostazioni della porta API. La porta dell'API è generalmente 443 o 19999. La porta dell'API deve avere le stesse impostazioni di configurazione della porta dell'istanza di Looker (9999 per impostazione predefinita). L'amministratore di rete deve verificare che le seguenti impostazioni siano le stesse per la porta dell'API e per la porta dell'istanza di Looker:

  • Proxy
  • Bilanciatori del carico
  • Firewall

Verifica l'URL della chiamata API

Verifica di utilizzare l'URL corretto per la chiamata API. Il formato dell'URL di un endpoint API è:

<API Host URL>/api/<API version>/<API call>

Se utilizzi l'URL host dell'API predefinito, il formato dell'URL dell'endpoint API è:

https://<instance_name>:<port>/api/<API version>/<API call>

Puoi trovare il formato dell'URL per gli endpoint API da Explorer API o dalla documentazione di Riferimento API.

Ad esempio, la sezione Riferimento API 4.0 fornisce il seguente percorso relativo per l'endpoint Get tutte le query in esecuzione:

/api/4.0/running_queries

Di conseguenza, l'URL completo dell'endpoint API per l'endpoint Get All Running Queries dell'istanza di Looker docsexamples.dev.looker.com sarebbe il seguente:

https://docsexamples.dev.looker.com:443/api/4.0/running_queries

Il risultato dell'API è testo senza senso

Se l'API restituisce una risposta con testo incomprensibile, è probabile che tu stia visualizzando i contenuti binari di un file PDF, PNG o JPG. Alcune librerie REST HTTP presuppongono che le risposte dell'API siano file di testo, quindi altri tipi di file vengono visualizzati come testo binario.

In questo caso, devi assicurarti che la libreria REST HTTP gestisca la risposta dell'API come dati binari, non come testo. In alcuni casi, questo può significare l'impostazione di un flag nella chiamata API per comunicare alla libreria REST HTTP che si tratta di un risultato binario, oppure potrebbe significare gestire il risultato in un modo speciale, ad esempio come un flusso di byte o come un array di byte, anziché assegnare il risultato a una variabile stringa.

Le chiamate API non rispondono

Se riesci ad aprire Explorer API, ma le chiamate API non rispondono, verifica che l'impostazione URL host API dell'istanza di Looker sia impostata correttamente. Gli amministratori di Looker possono visualizzare l'URL dell'host dell'API nelle impostazioni di amministrazione delle API di Looker (descritte nella pagina della documentazione Impostazioni amministratore - API).

Errori di codifica non validi

Se ricevi un errore di codifica quando cerchi di effettuare una chiamata API, potresti dover impostare il Content-Type corretto nell'intestazione durante la richiesta. Gli standard del protocollo HTTP richiedono che qualsiasi richiesta POST, PUT o PATCH contenga un'intestazione Content-Type. Poiché l'API Looker utilizza JSON, l'intestazione Content-Type deve essere impostata su application/json.

Tieni presente che l'utilizzo di un SDK Looker gestirà automaticamente questo problema per te.

Errori "Metodo non trovato"

Se ricevi un errore Metodo non trovato, come method not found: all_looks(), la prima cosa da verificare è la versione dell'API. Esistono diverse chiamate API nuove in API 4.0 o che sono state rimosse nell'API 4.0. Consulta l'annuncio relativo alla disponibilità generale dell'API Looker 4.0 per l'elenco degli aggiornamenti.

Errori di richiesta non valida (400)

Un errore 400 Bad Request indica che i dati forniti in una chiamata API non sono riconoscibili. Il colpevole è spesso danneggiato o non è valido in formato JSON, ad esempio un errore di analisi. Poiché nella maggior parte dei casi gli errori 400 hanno già superato l'autenticazione, il messaggio di risposta di errore ti fornisce informazioni più specifiche sull'errore.

Errori non autorizzati (401)

Un errore 401 Unauthorized su una chiamata API indica che la chiamata API non è autenticata correttamente. Per ulteriori dettagli sulla risoluzione dei problemi, consulta l'articolo Come faccio a risolvere gli errori 401? Articolo della community.

Errori vietati (403)

L'API Looker non restituisce errori 403 ogni volta che un utente tenta di accedere a un oggetto LookML o ad altri contenuti per i quali non dispone dell'autorizzazione. La restituzione di un errore 403 anziché di un errore 404 potrebbe, in alcuni casi, verificare l'esistenza di un particolare oggetto Explore, dashboard o LookML se il proprietario preferisce che questo non sia noto. Per evitare che questo accada, in questi casi Looker restituisce un errore 404 e nell'interfaccia utente di Looker viene visualizzato l'errore: "Impossibile trovare la pagina richiesta. Non esiste oppure non disponi dell'autorizzazione per la visualizzazione."

A seconda dell'ambiente in cui è ospitata l'istanza di Looker e della configurazione dell'istanza di Looker, il numero di porta e l'URL associato da cui è possibile accedere all'API potrebbero essere diversi. Quando utilizzi un numero di porta errato, potresti visualizzare un errore 403. Ad esempio, se la tua istanza di Looker è configurata con la porta API predefinita 443, la connessione a https://mycompany.looker.com/api/4.0/login, anziché a https://mycompany.looker.com:443/api/4.0/login, restituirà un errore 403. Per le istanze ospitate dal cliente, scopri di più sulle opzioni di avvio di Looker, in cui puoi definire la porta API.

Questo problema può verificarsi anche quando utilizzi una versione obsoleta della gem dell'SDK Ruby. Assicurati di tenere aggiornate le perle. Puoi controllare all'indirizzo https://rubygems.org/gems/looker-sdk.

Questo può accadere anche se non includi la parte /api/<version number>/ dell'URL. In questo caso, se un utente tenta di connettersi a https://mycompany.looker.com:443/login, visualizzerà una risposta 403.

Errori non trovato (404)

Un errore 404 Not Found è l'errore predefinito se si verificano problemi, di solito a causa delle autorizzazioni. Il messaggio di risposta per un errore 404 fornisce informazioni minime o nulle. Si tratta di un'operazione intenzionale, perché gli errori 404 vengono visualizzati dagli utenti con credenziali di accesso errate o autorizzazioni insufficienti. Looker non vuole fornire informazioni specifiche nei messaggi di risposta 404, poiché queste possono essere utilizzate per mappare la "superficie di attacco" dell'API Looker.

Se i tentativi di accesso all'API restituiscono errori 404, è molto probabile che l'ID client API o il client secret non sia valido (consulta la sezione Verificare le credenziali API in precedenza in questa pagina). L'endpoint REST di accesso all'API è il seguente:

  • https://<your-looker-hostname>:<port>/api/4.0/login

Se utilizzi un'API Swagger codegen o un SDK Looker, assicurati che il valore di base_url sia corretto:

  • Per un client codegen spavaldo, il base_url deve essere il seguente:

    • https://<your-looker-hostname>:<port>/api/4.0/
  • Per le implementazioni dell'SDK Looker che utilizzano looker.ini, il valore di api_version deve essere 4.0 e il valore di base_url deve corrispondere all'URL dell'API dell'istanza Looker nel formato https://<your-looker-hostname>:<port>. Di seguito è riportato un file looker.ini di esempio:

    # api_version should be 4.0
    api_version=4.0
    base_url=https://<your-looker-hostname>:<port>
    

Puoi anche visualizzare un errore 404 dopo aver eseguito l'accesso. Se hai eseguito l'accesso e viene visualizzato un errore 404, significa che non disponi delle autorizzazioni per il comando API che hai appena chiamato.

Errori relativi al metodo non consentito (405)

Un errore 405 Method Not Allowed indica che il server conosce il metodo di richiesta, ma la risorsa di destinazione non lo supporta.

Il server deve generare un campo di intestazione Allow in una risposta del codice di stato 405. Il campo deve contenere un elenco di metodi supportati dalla risorsa di destinazione.

Ad esempio, un modo in cui potresti riscontrare questo problema in Looker potrebbe essere il tentativo di utilizzare l'endpoint update_dashboard() per aggiornare i metadati di una dashboard LookML. La modifica del parametro id di una dashboard LookML non è supportata tramite l'API Looker, quindi si verificherà un errore 405.

Errori di conflitto (409)

Il codice di stato della risposta 409 Conflict indica un conflitto di richiesta con lo stato attuale della risorsa di destinazione.

I conflitti hanno maggiori probabilità di verificarsi in risposta a una richiesta PUT. Un esempio comune di questo errore si verifica quando si carica un file precedente a quello esistente sul server, generando un conflitto di controllo della versione.

Potresti riscontrare questo errore in Looker quando provi a eseguire il check-out di un nuovo ramo Git utilizzando l'API o quando utilizzi endpoint come create_group() o create_dashboard(). In questi casi, controlla se l'oggetto che stai cercando di creare esiste già.

Errori di convalida (422)

Gli errori di convalida si verificano quando qualcosa nella richiesta non ha superato i controlli dei dati eseguiti. La richiesta contiene uno o più dei seguenti tipi di errori (la risposta di errore specificherà gli errori esatti):

  • Campi mancanti: esiste un parametro obbligatorio che non è stato fornito (la risposta di errore indicherà quale campo risulta mancante).
  • Non valido: il valore fornito non corrisponde a un valore esistente oppure il valore non è nel formato corretto. Ad esempio, se provi a creare un Look e l'ID query fornito nella chiamata API non corrisponde a una query esistente, verrà visualizzato un errore di convalida.
  • Esiste già: la chiamata API sta tentando di creare un oggetto con un ID o un nome già presente nell'istanza di Looker. Ad esempio, i nomi delle connessioni al database devono essere univoci. Se provi a creare una nuova connessione al database che utilizza il nome di una connessione esistente, riceverai un errore di convalida con il codice already_exists.

Per informazioni dettagliate sui campi mancanti o obbligatori oppure sui campi che potrebbero contenere valori non validi, consulta il messaggio di risposta di errore. Il messaggio di risposta riporterà tutti gli errori di convalida contemporaneamente. Pertanto, se hai campi mancanti e anche campi errati, nella risposta di errore verranno elencati tutti i problemi relativi alla tua chiamata API.

Ecco un esempio di risposta:

{
  "message": "Validation Failed",
  "errors": [
    {
    "field": "dialect",
    "code": "missing_field",
    "message": "This field is required.",
    "documentation_url": "http://docs.looker.com/"
    },
    {
    "field": "db_timezone",
    "code": "invalid",
    "message": "Must specify a database timezone when user timezones are activated.",
    "documentation_url": "http://docs.looker.com/"
    }
  ],
    ...

In questo caso, alla chiamata API mancava il campo obbligatorio dialect e aveva anche un valore non valido specificato in db_timezone.

Errori di Troppe richieste (429)

Il codice di stato della risposta 429 Too Many Requests indica che l'utente ha inviato troppe richieste in un determinato periodo di tempo ("limitazione di frequenza"). Per saperne di più sulle norme di limitazione di frequenza di Looker, consulta il post della community di Looker Esiste un limite al numero di richieste API che è possibile inviare contemporaneamente?

Errori interni del server (500)

Il codice di risposta 500 Internal Server Error indica che il server ha riscontrato una condizione imprevista che gli ha impedito di soddisfare la richiesta.

Questa risposta di errore è una risposta generica "catch-all". In genere, questo indica che il server non è in grado di trovare un codice di errore 5xx più specifico da restituire in risposta. Qualsiasi risposta 500 da Looker è imprevista, quindi se visualizzi questo errore costantemente mentre provi a interagire con Looker, ti consigliamo di aprire una richiesta di assistenza.