Dépannage de l'API Looker

Cette page contient des procédures de dépannage pour les problèmes suivants que vous pouvez rencontrer avec l'API Looker:

Le point de terminaison de l'API est inaccessible

Si vous ne parvenez pas à atteindre un point de terminaison de l'API:

Valider vos identifiants d'API

Si le point de terminaison de votre API Looker est inaccessible, commencez par vérifier que vos identifiants d'API sont corrects. Pour afficher vos identifiants d'API:

  1. Dans Looker, accédez au panneau Administration en sélectionnant l'option Administration dans le panneau de navigation de gauche.
  2. Dans le panneau de gauche de la page Administration, faites défiler la page vers le bas, puis cliquez sur Utilisateurs.
  3. Recherchez votre nom d'utilisateur dans la liste des utilisateurs, puis cliquez dessus pour modifier votre page d'utilisateurs.
  4. Cliquez sur Modifier les clés API. Vous pouvez voir le Client-ID, et cliquer sur l'icône en forme d'œil pour afficher le Code secret du client pour chaque clé API que vous avez configurée. Vérifiez que vos identifiants d'API correspondent à ceux que vous utilisez dans votre script.

Vérifier l'URL de l'API

Un autre problème courant lors de l'accès à un point de terminaison d'API est une URL d'hôte API incorrecte. La plupart des instances Looker utilisent l'URL par défaut de l'API. Toutefois, les installations Looker via un autre chemin d'API, les installations Looker situées derrière un équilibreur de charge (par exemple, une configuration de cluster) ou tout autre proxy peuvent ne pas utiliser l'URL par défaut. Dans ce cas, l'URL de l'hôte de l'API doit indiquer le nom d'hôte et le port de l'API destinés aux utilisateurs.

Les administrateurs Looker peuvent voir l'URL de l'hôte de l'API dans les paramètres d'administration de l'API (décrits plus en détail sur la page de documentation Paramètres d'administration - API). Pour afficher l'URL de l'hôte de l'API:

  1. Accédez au panneau Admin en sélectionnant l'option Admin dans le panneau de navigation de gauche.
  2. Cliquez sur API dans le panneau d'administration.
  3. Affichez l'URL de l'hôte de l'API.

    Si le champ URL hôte de l'API est vide, votre instance Looker utilise le format par défaut, à savoir:

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

Pour tester l'URL de l'hôte de l'API:

  1. Ouvrez un navigateur, puis sa console.
  2. Saisissez l'URL d'hôte de l'API suivie de /alive. Par exemple, si votre URL d'hôte d'API est https://company.cloud.looker.com, saisissez:

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

    Si le champ URL de l'hôte de l'API est vide, utilisez l'URL par défaut de l'API. Par exemple, pour les instances hébergées sur Google Cloud, Microsoft Azure et les instances hébergées sur Amazon Web Services (AWS) créées à partir du 07/07/2020, le chemin d'accès à l'API Looker par défaut utilise le port 443:

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

    Pour les instances hébergées sur AWS créées avant le 07/07/2020, le chemin d'accès à l'API Looker par défaut utilise le port 19999:

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

Si l'URL de l'hôte de l'API est correcte, elle générera une page Web vierge, et non une page d'erreur.

Vous pouvez également vérifier que vous avez accédé à l'API en consultant la réponse du réseau dans la console de votre navigateur. La réponse du réseau doit être 200.

Si ces vérifications échouent, le problème peut être dû au fait que vous appelez l'API de manière incorrecte ou que votre code comporte d'autres erreurs. Vérifiez vos appels d'API et le code de votre script. Si c'est le cas, consultez la section suivante sur la vérification du port.

Vérifier le port de l'API

Si les vérifications précédentes échouent et que vous disposez d'un déploiement Looker hébergé par un client, il est possible que le port d'API doive être ouvert sur l'infrastructure réseau.

Le port de l'API doit transférer les données vers le serveur Looker. Pour les déploiements Looker hébergés par un client, demandez à votre administrateur réseau de vérifier les paramètres de port de l'API. Le port d'API est le plus souvent 443 ou 19999. Le port d'API doit avoir les mêmes paramètres de configuration que le port de l'instance Looker (9999 par défaut). Votre administrateur réseau doit vérifier que les paramètres suivants sont identiques pour le port d'API et pour le port de votre instance Looker:

  • Proxys
  • Équilibreurs de charge
  • Pare-feu

Vérifier l'URL de l'appel d'API

Vérifiez que vous utilisez la bonne URL pour votre appel d'API. Le format d'une URL de point de terminaison d'API est le suivant:

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

Si vous utilisez l'URL d'hôte de l'API par défaut, le format d'une URL de point de terminaison de l'API est le suivant:

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

Vous pouvez obtenir le format d'URL des points de terminaison de l'API à partir de l'explorateur d'API ou de la documentation de référence de l'API.

Par exemple, la documentation de référence de l'API 4.0 donne le chemin relatif suivant pour le point de terminaison "Obtenir toutes les requêtes en cours d'exécution" :

/api/4.0/running_queries

Par conséquent, l'URL complète du point de terminaison de l'API pour le point de terminaison "Obtenir toutes les requêtes en cours d'exécution" sur l'instance Looker docsexamples.dev.looker.com serait la suivante:

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

Le résultat de l'API est un texte incompréhensible

Si l'API renvoie une réponse de texte illisible, il est probable que vous voyiez le contenu binaire d'un fichier PDF, PNG ou JPG. Certaines bibliothèques REST HTTP partent du principe que les réponses de l'API sont des fichiers texte. Par conséquent, d'autres types de fichiers sont affichés sous forme de texte binaire.

Dans ce cas, vous devez vous assurer que votre bibliothèque REST HTTP gère la réponse de l'API en tant que données binaires et non en tant que texte. Dans certains cas, cela peut signifier définir un indicateur sur l'appel d'API pour indiquer à la bibliothèque HTTP REST qu'il s'agit d'un résultat binaire, ou traiter le résultat d'une manière spéciale, comme un flux d'octets ou un tableau d'octets, au lieu d'attribuer le résultat à une variable de chaîne.

Les appels d'API ne répondent pas

Si vous parvenez à ouvrir APIs Explorer, mais que vos appels d'API ne répondent pas, vérifiez que le paramètre URL d'hôte de l'API de votre instance Looker est correctement défini. Les administrateurs Looker peuvent voir l'URL de l'hôte de l'API dans les paramètres d'administration de l'API Looker (décrits sur la page de documentation Paramètres d'administration - API).

Erreurs d'encodage non valides

Si vous recevez une erreur d'encodage lorsque vous tentez d'effectuer un appel d'API, vous devrez peut-être définir le bon Content-Type dans votre en-tête lors de la requête. Les normes de protocole HTTP exigent que toute requête POST, PUT ou PATCH contienne un en-tête Content-Type. Étant donné que l'API Looker utilise JSON tout au long de l'opération, l'en-tête Content-Type doit être défini sur application/json.

Notez que l'utilisation d'un SDK Looker vous permettra de résoudre automatiquement ce problème.

Erreurs de méthode introuvable

Si vous obtenez une erreur "Méthode introuvable", telle que method not found: all_looks(), vous devez d'abord vérifier la version de votre API. Plusieurs appels d'API sont nouveaux dans l'API 4.0 ou ont été supprimés dans l'API 4.0. Consultez l'annonce concernant la disponibilité générale de l'API Looker 4.0 pour obtenir la liste des mises à jour.

Erreurs de requête incorrecte (400)

Une erreur 400 Bad Request indique que les données fournies dans un appel d'API ne sont pas identifiables. Il s'agit souvent d'un fichier JSON endommagé ou non valide, qui peut être une erreur d'analyse. Dans la plupart des cas, les erreurs 400 ont déjà passé avec succès l'authentification. Le message de réponse d'erreur fournit donc des informations plus spécifiques sur l'erreur.

Erreurs d'autorisation (401)

Une erreur 401 Unauthorized lors d'un appel d'API signifie que l'appel d'API n'est pas correctement authentifié. Pour en savoir plus sur le dépannage, consultez Comment résoudre les erreurs 401 ? Article de la communauté.

Erreurs "Accès interdit (403)"

L'API Looker ne renvoie pas d'erreurs 403 chaque fois qu'un utilisateur tente d'accéder à un objet LookML ou à un autre contenu pour lequel il n'a pas d'autorisation. Le renvoi d'une erreur 403 au lieu d'une erreur 404 peut, dans certains cas, vérifier l'existence d'une exploration, d'un tableau de bord ou d'un objet LookML particulier lorsque le propriétaire préfère que cela ne soit pas connu. Pour éviter cela, Looker renvoie une erreur 404 dans ces cas de figure et l'erreur qui s'affiche dans l'interface utilisateur de Looker indique: "Impossible de trouver la page demandée. Il n'existe pas ou vous n'êtes pas autorisé à le consulter."

Le numéro de port et l'URL associée permettant d'accéder à l'API peuvent varier en fonction de l'environnement dans lequel votre instance Looker est hébergée et de sa configuration. Lorsque vous utilisez un numéro de port incorrect, une erreur 403 peut s'afficher. Par exemple, si votre instance Looker est configurée avec le port d'API par défaut 443, la connexion à https://mycompany.looker.com/api/4.0/login (au lieu de https://mycompany.looker.com:443/api/4.0/login) renvoie une erreur 403. Pour les instances hébergées par le client, vous pouvez en savoir plus sur les options de démarrage de Looker permettant de définir le port d'API.

Cela peut également se produire lorsque vous utilisez une version obsolète du gem du SDK Ruby. Pensez à mettre à jour ces gemmes. Vous pouvez vérifier à l'adresse https://rubygems.org/gems/looker-sdk.

Cela peut également se produire si vous n'incluez pas la partie /api/<version number>/ de l'URL. Dans ce cas, si un utilisateur tente de se connecter à https://mycompany.looker.com:443/login, une réponse 403 s'affiche.

Erreurs de type "Page introuvable" (404)

Une erreur 404 Not Found est l'erreur par défaut en cas de problème, généralement avec des autorisations telles que des autorisations. Le message de réponse à une erreur 404 fournit un minimum d'informations, voire aucune. C'est intentionnel, car les erreurs 404 sont signalées aux utilisateurs dont les identifiants de connexion sont incorrects ou dont les autorisations sont insuffisantes. Looker ne souhaite pas fournir d'informations spécifiques dans les messages de réponse 404, car ces informations pourraient être utilisées pour cartographier la « surface d'attaque » de l'API Looker.

Si des tentatives de connexion à l'API renvoient des erreurs 404, cela est probablement dû au fait que votre ID client d'API ou votre code secret du client ne sont pas valides (voir la section Vérifier vos identifiants d'API plus tôt sur cette page). Le point de terminaison REST de connexion à l'API est le suivant:

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

Si vous utilisez une API de génération de code Swagger ou un SDK Looker, assurez-vous que la valeur base_url est correcte:

  • Pour un client de génération de code Swagger, le base_url doit être le suivant:

    • https://<your-looker-hostname>:<port>/api/4.0/
  • Pour les implémentations du SDK Looker qui utilisent un looker.ini, la valeur de api_version doit être 4.0 et la valeur de base_url doit être identique à l'URL de l'API de votre instance Looker au format https://<your-looker-hostname>:<port>. Voici un exemple de fichier looker.ini:

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

Une erreur 404 peut également s'afficher une fois que vous êtes connecté. Si vous êtes connecté et qu'une erreur 404 s'affiche, cela signifie que vous ne disposez pas des autorisations nécessaires pour exécuter la commande d'API que vous venez d'appeler.

Erreurs de méthode non autorisée (405)

Une erreur 405 Method Not Allowed indique que le serveur connaît la méthode de requête, mais que la ressource cible n'accepte pas cette méthode.

Le serveur doit générer un champ d'en-tête Allow dans une réponse de code d'état 405. Le champ doit contenir une liste des méthodes compatibles avec la ressource cible.

Vous pourriez par exemple rencontrer ce problème dans Looker si vous essayez d'utiliser le point de terminaison update_dashboard() pour mettre à jour les métadonnées d'un tableau de bord LookML. La modification du paramètre id d'un tableau de bord LookML n'est pas prise en charge par l'API Looker, une erreur 405 peut donc se produire.

Erreurs de conflit (409)

Le code d'état de la réponse 409 Conflict indique un conflit de requête avec l'état actuel de la ressource cible.

Les conflits sont plus susceptibles de se produire en réponse à une requête PUT. Un exemple courant de cette erreur (autre que Looker) se produit lors de l'importation d'un fichier plus ancien que celui existant sur le serveur, ce qui entraîne un conflit de contrôle des versions.

Vous pouvez rencontrer cette erreur dans Looker lorsque vous essayez d'extraire une nouvelle branche Git à l'aide de l'API ou lorsque vous utilisez des points de terminaison tels que create_group() ou create_dashboard(). Dans ce cas, vérifiez si l'objet que vous essayez de créer existe déjà.

Erreurs de validation (422)

Des erreurs de validation se produisent lorsqu'un élément de la requête a échoué aux vérifications des données effectuées. La requête comporte un ou plusieurs des types d'erreurs suivants (la réponse d'erreur précisera les erreurs exactes):

  • Champs manquants: un paramètre obligatoire n'a pas été fourni (la réponse d'erreur indique quel champ est manquant).
  • Non valide: la valeur fournie ne correspond pas à une valeur existante ou n'est pas au bon format. Par exemple, si vous essayez de créer un Look et que l'ID de requête que vous indiquez dans l'appel d'API ne correspond pas à une requête existante, vous obtiendrez une erreur de validation.
  • Déjà existant: l'appel d'API tente de créer un objet avec un ID ou un nom déjà présent dans votre instance Looker. Par exemple, les noms de connexion de base de données doivent être uniques. Si vous essayez de créer une connexion de base de données utilisant le nom d'une connexion existante, vous obtiendrez une erreur de validation avec le code already_exists.

Consultez le message de réponse d'erreur pour savoir quels champs sont manquants ou obligatoires, ou quels champs peuvent contenir des valeurs non valides. Le message de réponse fournira toutes les erreurs de validation en même temps. Ainsi, s'il manque des champs, mais aussi des champs incorrects, la réponse d'erreur liste tous les problèmes liés à votre appel d'API.

Voici un exemple de réponse:

{
  "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/"
    }
  ],
    ...

Dans ce cas, le champ dialect obligatoire ne figurait pas dans l'appel d'API, et une valeur non valide a également été indiquée dans db_timezone.

Erreurs "Requêtes trop nombreuses (429)"

Le code d'état de la réponse 429 Too Many Requests indique que l'utilisateur a envoyé trop de requêtes dans un laps de temps donné ("limitation du débit"). Pour en savoir plus sur les règles de limitation du débit de Looker, consultez l'article de la communauté Looker Y a-t-il une limite au nombre de requêtes API que vous pouvez envoyer simultanément ?

Erreurs de serveur interne (500)

Le code de réponse 500 Internal Server Error indique que le serveur a rencontré une condition inattendue qui l'a empêché de traiter la requête.

Cette erreur est une réponse générique de type "catch-all". Cela indique généralement que le serveur ne parvient pas à trouver un code d'erreur 5xx plus spécifique à renvoyer en réponse. Toute réponse 500 de Looker est inattendue. Par conséquent, si cette erreur s'affiche systématiquement lorsque vous essayez d'interagir avec Looker, nous vous recommandons d'ouvrir une demande d'assistance.