Accéder au contenu principal Passer au contenu complémentaire

Propriétés du Client HTTP

Propriétés à configurer pour pouvoir envoyer une requête HTTP au serveur et obtenir les informations de réponse correspondantes depuis le serveur.

Connexion au Client HTTP

Sélectionnez HTTP Client dans la liste et configurez la connexion.

Configuration

Sélectionnez votre moteur dans la liste et configurez les paramètres principaux et avancés.

Paramètres principaux
Propriété Configuration
Base URL

Saisissez l'URL de base à laquelle accéder.

Par exemple : https://www.example.com/v1.0/

La seconde partie de l'URL doit être définie dans le paramètre Path (Chemin) de la configuration du jeu de données du Client HTTP.

Vous pouvez également définir une valeur factice à l'aide de la syntaxe Data Shaping Selector Language pour remplir certaines parties de manière dynamique avec la valeur extraite provenant de l'enregistrement entrant. Exemple :

Base URL (URL de base) = "https://{.input.job_url}" et Path (Chemin) = "{.input.job_url_path}"

Authentification Sélectionnez l'une des méthodes d'authentification suivantes selon les prérequis de sécurité du serveur :
  • No authentication (Pas d'authentification) : aucune authentification n'est attendue pour accéder au serveur.
  • Basic : un identifiant et un mot de passe sont attendus (consultez la documentation correspondante, en anglais).
  • Basic (Basique) : un identifiant et un mot de passe sont attendus (consultez la documentation correspondante, en anglais).
  • Bearer Token (Jeton Bearer) : un jeton d'accès brut est attendu. Il sera passé dans l'en-tête de la requête HTTP en tant qu'autorisation  : Bearer <votre jeton>.
  • NTLM : un identifiant (pouvant contenir un nom de domaine) et un mot de passe sont attendus (consultez la documentation correspondante, en anglais).
  • API Key (Clé d'API) : utilise une manière flexible de passer un jeton de clé d'API au serveur, avec la possibilité de sélectionner où le passer, avec quel nom et un préfixe :
    • Destination : sélectionnez où sera configuré le jeton : dans un en-tête HTTP avec le nom donné ou dans un paramètre de requête HTTP avec le nom donné (non recommandé car le jeton peut être visible dans les logs).
    • Name (Nom) : saisissez le nom de l'en-tête ou le paramètre de requête.
    • Prefix (Préfixe) (facultatif) : saisissez le préfixe à ajouter devant le jeton (uniquement si la Destination est Request header (En-tête de la requête)).
    • Token (Jeton) : saisissez le jeton d'authentification.
  • OAuth 2.0 gère automatiquement la récupération et le renouvellement du jeton d'accès par rapport au serveur OAuth puis le passe à l'endpoint cible en tant que jeton Bearer :
    • Flow (Flux) : le flux OAuth que vous souhaitez exécuter. Atuellement, seul le flux Client Credentials est supporté.
    • Authentication mode (Mode d'authentification) : pour toutes les méthodes d'authentification supportées, les paramètres de flux et de périmètre (scope) sont configurés dans le corps, à l'aide du format 'application/x-www-form-urlencoded' avec les clés 'grant_type=xxx&scope=xxxx'.
    • Token endpoint (Endpoint du jeton) :
    • Saisissez le jeton d'authentification en respectant le format 'oauth2/mydomain.com/token'.
    • Client ID (ID Client) et Client secret (Secret du client) : saisissez l'ID client et le secret du client.
    • Additional parameters (Paramètres supplémentaires) : saisissez les attributs supplémentaires à ajouter, par exemple l'attribut scope.
Advanced settings
Propriété Configuration
Connection timeout (ms)

Saisissez l'URL de base à laquelle accéder.

Par exemple : https://www.example.com/v1.0/

La seconde partie de l'URL doit être définie dans le paramètre Path (Chemin) de la configuration du jeu de données du Client HTTP.

Read timeout (ms) Configure le temps d'attente maximal en millisecondes pour recevoir le payload de la réponse. Une exception est retournée si le délai avant expiration est expiré avant que les données soient disponibles à la lecture.
Bypass server certificate validation (Ignorer la validation du certificat du serveur) Lorsque cette option est activée, le certificat du serveur n'est pas validé par le client. Elle est conçue à des fins de tests uniquement et doit être désactivée dans les environnements de production.
Use a proxy (Utiliser un proxy)

Activez cette option pour que la connexion entre le client et le serveur soit établie via un proxy HTTP ou SOCKS :

  • Proxy type (Type de proxy) : sélectionnez le type de proxy à utiliser. Le proxy HTTP supporte l'authentification basique.
  • Proxy host (Hôte du proxy) et Proxy port (Port du proxy) : saisissez l'adresse et le port du proxy.
  • Proxy login (identifiant du proxy) et Proxy password (Mot de passe du proxy) (HTTP uniquement) : saisissez les identifiants nécessaires à l'authentification au proxy.
Retry with exponential backoff (Réessayer avec un backoff exponentiel) Sélectionnez cette option pour effectuer une nouvelle tentative automatique des appels HTTP en échec. Lorsque cette option est sélectionnée, une nouvelle tentative d'appel HTTP est effectuée si le délai avant expiration est atteint, ou si le code de statut HTTP est supérieur ou égal à 400. Cependant, aucune tentative n'est effectuée pour les erreurs 401/403/511, qui sont des erreurs relatives à l'authentification.
  • Initial backoff (ms) (Backoff initial (ms)) : saisissez la durée d'attente, en millisecondes, avant la première nouvelle tentative d'appel HTTP.
  • Backoff factor (Facteur de backoff) : lorsqu'une tentative échoue, la durée d'attente est multipliée par ce facteur, pour augmenter le délai entre chaque appel. Si le facteur est 1, tous les délais seront identiques.
  • Maximum number of retries (Nombre maximal de tentatives) : saisissez le nombre maximal de tentatives pour une requête HTTP seule. L'appel initial ne doit pas être inclus dans ce nombre.

Exemple pour la configuration suivante :

Intial backoff (Backoff initial) : 300 ms, Backoff factor (Facteur de backoff) : 2 et Maximum number of retries (Nombre maximal de tentatives) : 4

Le connecteur HTTP Client (Client HTTP) effectue une première opération GET sur le serveur (premier appel). Une erreur d'expiration de la connexion est retournée. Le mécanisme de tentatives est activé et le connecteur attend 300 millisecondes. Une nouvelle tentative est effectuée (première tentative). Une réponse HTTP 503 est retournée. La durée d'attente est multipliée par 2, le connecteur attend donc 600 millisecondes. Une troisième tentative est effectuée (deuxième tentative). Une erreur 500 interne au serveur est retournée. La durée d'attente est multipliée par 2, le connecteur attend donc 1 200 millisecondes. Une quatrième tentative est effectuée (troisième tentative). Elle réussit. Aucune tentative supplémentaire n'est efffectuée et la réponse est retournée.

Après avoir configuré la connexion, donnez-lui un nom à afficher (obligatoire) et une description (facultative).

Jeu de données du Client HTTP

Configuration du jeu de données
Propriété Configuration
Dataset name Saisissez un nom pour le jeu de données. Ce nom sera utilisé comme identifiant unique du jeu de données dans toutes les applications Talend Cloud.
Connexion Sélectionnez votre connexion dans la liste. Si vous créez un jeu de données basé sur une connexion existante, ce champ est en lecture seule.
Type Sélectionnez le type de jeu de données à créer :
  • Batch si vous souhaitez exécuter une seule fois la requête HTTP. Le pipeline utilisant ce jeu de données sera un pipeline de type batch.
  • Streaming si vous souhaitez exécuter la requête HTTP toutes les N millisecondes dans un pipeline de type streaming. Le pipeline utilisant ce jeu de données sera un pipeline de type streaming et vous pourrez définir l'intervalle d'interrogation en millisecondes dans le champ Min poll interval (ms) (Intervalle minimal d'interrogation (ms)) du jeu de données source.
Paramètres principaux
Propriété Configuration
HTTP method Sélectionnez dans la liste la méthode HTTP pour définir l'action à effectuer.
Path (Chemin d'accès)

Saisissez la seconde partie de l'URL précédemment définie dans la configuration de la connexion sur laquelle le jeu de données est créé. La concaténation des deux désigne la ressource que vous ciblez avec ce jeu de données.

Les valeurs de l'URL de base (Base URL) (connexion) et du chemin (Path) (jeu de données) sont concaténées et un caractère / est ajouté quand cela est nécessaire.

Vous pouvez également définir une valeur factice à l'aide de la syntaxe Data Shaping Selector Language pour remplir certaines parties de manière dynamique avec la valeur extraite provenant de l'enregistrement entrant. Exemple :

Base URL (URL de base) = "https://{.input.job_url}" et Path (Chemin) = "{.input.job_url_path}"

Path parameters (Paramètres de chemin)

Activez cette option pour spécifier les paramètres supplémentaires nécessaires pour compléter l'URL de base ou le chemin sous la forme de paires nom-valeur.

Si le champ Base URL (URL de base) ou Path (Chemin) contient une valeur factice, vous pouvez définir les paramètres de rempalcement de cette valeur :
  • Name (Nom) : saisissez le nom de la valeur factice à remplacer.
  • Value (Valeur) : saisissez la valeur par laquelle remplacer la valeur factice. Cela peut être une valeur statique comme contactEntity, une valeur extraite de l'enregistrement entrant, comme {.input.entity.id}, ou un mélange des deux, comme version{.input.api.version}.

Exemple :

Base URL (URL de base) = https://www.example.com

Path (Chemin) = /{api_version}

Nom du paramètre = api_version

Valeur du paramètre = v1.0

Query parameters (Paramètres de requête) Activez cette option pour spécifier les paramètres qui seront configurés dans l'URL de la requête après le caractère ?, sous forme de paires nom-valeur. Ces valeurs sont encodées automatiquement.
  • Name (Nom) : saisissez le nom du paramètre.
  • Value (Valeur) : saisissez la valeur du paramètre. Cela peut être une valeur statique comme UUID-1234567, une valeur extraite de l'enregistrement entrant, comme {.input.user.id}, ou un mélange des deux, comme UUID-{.input.user.id}.

Exemple :

Nom du paramètre de la requête = entityId

Valeur du paramètre de la requête = UUID-1234567

Request headers (En-têtes des requêtes) Activez cette option pour définir des en-têtes de requêtes HTTP en tant que paires nom-valeur. Vous pouvez définir chaque en-tête pour qu'il fasse partie de la requête HTTP principale (Main), de la requête d'authentification (Authentication, disponible uniquement avec l'authentification OAuth 2.0), ou des deux requêtes (Both).
  • Name (Nom) : saisissez le nom de l'en-tête.
  • Value : saisissez la valeur de l'en-tête. Elle peut être une valeur statique comme text/html; charset=utf-8, une valeur extraite de l'enregistrement entrant, comme {.input.meta.content}, ou un mélange des deux, comme text/{.input.document.format}; charset={.input.document.charset}.
  • Query (Requête) : sélectionnez la requête sur laquelle appliquer cette configuration d'en-tête.

Exemple :

Nom de l'en-tête = Content-Type

Valeur de l'en-tête = text/html; charset=utf-8

Query = Main

Corps de la requête Activez cette option si vous souhaitez inclure un corps de message dans la requête :
  • TEXT : saisissez le corps du message en plein texte. Vous pouvez définir une valeur factice à l'aide de la syntaxe Data Shaping Selector Language pour remplir certaines parties de manière dynamique avec la valeur extraite provenant de l'enregistrement entrant. Exemple :
    id={.input.user.id}
    name={.input.user.name}
  • JSON : saisissez le corps du message au format JSON. Vous pouvez définir une valeur factice à l'aide de la syntaxe Data Shaping Selector Language pour remplir certaines parties de manière dynamique avec la valeur extraite provenant de l'enregistrement entrant. Exemple :
    {
        "id": "{.input.user.id}",
        "name": "{.input.user.name}",
        "age": {.input.user.age},
    }
  • XML : saisissez le corps du message au format XML. Vous pouvez définir une valeur factice à l'aide de la syntaxe Data Shaping Selector Language pour remplir certaines parties de manière dynamique avec la valeur extraite provenant de l'enregistrement entrant. Exemple :
    <user>
       <id>{.input.user.id}</id>
       <name>{.input.user.name}</name>
       <age>{.input.user.age}</age>
    </user>
  • Form data (Données de formulaire) : crée le corps à l'aide d'un formulaire multipart avec des paires nom-valeur d'attributs. Vous pouvez définir une valeur factice à l'aide de la syntaxe Data Shaping Selector Language pour remplir certaines parties de manière dynamique avec la valeur extraite provenant de l'enregistrement entrant.
  • X_WWW_FORM_URLENCODED : crée le corps à l'aide d'un formulaire URL-encoded avec des paires nom-valeur d'attributs. Vous pouvez définir une valeur factice à l'aide de la syntaxe Data Shaping Selector Language pour remplir certaines parties de manière dynamique avec la valeur extraite provenant de l'enregistrement entrant.
Response body format Sélectionnez le format du corps correspondant au type de payload attendu dans la réponse. Sélectionner le bon format permet au connecteur de parser et d'appliquer les opérations sur les enregistrements retournés :
  • TEXT : sélectionnez ce format pour retourner un message plein texte. Dans ce cas, le payload de la réponse n'est pas parsé et il ne sera pas possible d'en extraire de sous-partie ou d'utiliser les valeurs factices {.response...} dans les paramètres Output key/value pair (Paires de sortie clé/valeur ).
  • JSON : sélectionnez ce format si la réponse reçue est au format JSON. Dans ce cas, le payload est traduit en différents enregistrements JSON correctement parsés.
Extract a sub-part of the response (Extraire une sous-partie de la réponse)

(Disponible uniquement si le format du corps de la réponse est JSON ou XML)

Si le corps de la réponse est parsé en tant que JSON ou XML, il est possible de ne retourner qu'une sous-partie du payload de la réponse. La syntaxe Data Shaping Selector Language est utilisée pour extraire la valeur. Si un tableau est détecté, les éléments sont retournés l'un après l'autre.

Returned content (Contenu retourné) Selon les informations que vous devez recevoir du serveur, sélectionnez l'une de ces options :
  • Body (Corps) : si le format du corps de la réponse (Answer body format) est TEXT, un enregistrement avec un attribut de chaîne de caractères nommé body est généré et tout le payload est copié dans cet enregistrement.

    Si le format du corps de la réponse (Answer body format) est JSON, un enregistrement représentant la structure hiérarchique du document parsé est généré.

  • Status, headers and body (Statut, en-têtes et corps) : un enregistrement est généré avec un attribut status(de type Int) contenant le code de statut HTTP, un attribut headers, qui est un enregistrement contenant tous les en-têtes de réponses en tant qu'attributs imbriqués et un attribut body qui est une chaîne de caractères simple contenant le payload complet en tant que texte (Answer body format (Format du corps de la réponse) est TEXT) ou un objet hiérarchique représentant le document parsé.
Output key/value pair (Paire de sortie clé/valeur ) Activez cette option pour retourner les paires clé-valeur au lieu du corps brut de la réponse HTTP.
  • Name (Nom) : saisissez le nom de l'attribut à écrire en sortie.
  • Value (Valeur) : saisissez la valeur de l'attribut. Elle peut être une valeur statique, une valeur extraite de l'enregistrement entrant ou le résultat de la requête HTTP courante. La valeur de l'enregistrement d'entrée ou la réponse de l'appel HTTPCall courant est identifiée par son préfixe :
    • {.input} : sélecteur sur enregistrement d'entrée
    • {.response} : sélecteur sur réponse

Exemple :

Nom = id

Valeur = {.response.user.id}

Advanced settings
Propriété Configuration
Accept redirections Activez cette option pour appliquer les règles de redirection HTTP (en anglais) sur vos ressources.
  • Maximum number of redirects (Nombre maximal de redirections) : configurez le nombre maximal de redirections que doit suivre le connecteur. Si le nombre de redirections dépasse la valeur configurée, la dernière est retournée en tant que résultat de la requête.
  • Redirect only on same host (Rediriger uniquement sur le même hôte) : activez cette option si vous souhaitez que les redirections soient effectuées uniquement lors de l'utilisation du même hôte.
Pagination Activez cette option pour implémenter et configurer la pagination.
  • Preset (Préconfiguration) : sélectionnez la configuration prédéfinie pour les services les plus populaires supportant la pagination. Une fois sélectionnez, cliquez sur Load selected preset (Charger la préconfiguration sélectionnée) pour mettre à jour le formulaire de pagination pour l'environnement sélectionné.

    Pour plus d'informations, consultez la documentation Box, JIRA et OData (en anglais).

  • Pagination strategy (Stratégie de pagination) : stratégie de pagination implémentée dans le service HTTP sur lequel vous effectuez la requête. Offset/limit (Offset/limite) est la seule stratégie supportée pour le moment.
  • Location (Emplacement) : choisissez où sont configurés les paramètres d'offset et de limite : dans les paramètres de requête (Query parameters) ou dans les en-têtes (Headers).
  • Name of the offset (Nom de l'offset) : saisissez le nom du paramètre à utiliser comme offset.
  • Value of the offset (Valeur de l'offset) : configurez la valeur de l'offset initial. Saisissez 0 pour commencer au premier jeu (set).

    Vous pouvez récupérer cette valeur depuis l'enregistrement entrant, à l'aide de la syntaxe Data Shaping Selector Language.

    Exemple : {.input.last_page_info.offset}

  • Name of the limit (Nom de la limite) : saisissez le nom du paramètre qui sera utilisé pour définir le nombre maximal d'éléments retournés par page.
  • Value of the limit (Valeur de la limite) : configurez le nombre maximal d'éléments retournés dans une page. La pagination s'arrête lorsqu'une page est retournée avec 0 élément.
  • Path to elements (Chemin vers les éléments) : définissez le chemin du tableau JSON contenant les éléments retournés. Il doit correspondre à un tableau JSON. Le paramètre Offset/limit (Offset/limite) compte le nombre d'éléments dans ce tableau et continue ou arrête la pagination lorsqu'aucun contenu n'est retourné. Lorsque la stratégie Offset/limit (Offset/limite) de pagination est activée et que ce paramètre est configuré, il devient la racine pour Extract a sub-part of the response (Extraire une sous-partie de la réponse) dans la configuration Main (Principal).

    Exemple :

    Si vous sélectionnez la pagination JIRA/search (recherche), des tickets sont retournés dans le tableau .issues par défaut. Vous devez donc saisir cette valeur dans le champ Path to elements (Chemin vers les éléments). Cependant, si vous souhaitez que seules les clés Jira soient retournées, configurez .key dans le champ Extract a sub-part of the response (Extraire une sous-partie de la réponse). Les clés seront retournées même si key est un attribut des éléments présents dans issues.
Normalize the JSON HTTP response (Normaliser la réponse HTTP JSON) Sélectionnez cette option pour normaliser les incohérences dans les payloads JSON, afin que le composant puisse parser correctement ces documents :
  • Normalize attributes (Normaliser les attributs) : vous permet de convertir une valeur dans le type de données attendu.
  • Normalize arrays (Normaliser les tableaux) : vous permet de filtrer certains éléments d'un tableau JSON.

    Exemple :

    Si vous configurez le composant pour récupérer ce document JSON, ces incohérences JSON seront retournées dans la console d'exécution des Jobs :
    Some JSON inconsistencies has been identified:
                                        .users.*.addresses is not consistently present in all objects.
                                        .users.*.active is not consistently present in all objects.
                                        .users.*.email is not consistently present in all objects.
                                        .users.*.addresses is an array that contains items of several types: STRING, OBJECT.
                                        .users.*.addresses.*.country is not consistently present in all objects.
                                        .users.*.addresses.*.street is not consistently present in all objects.
                                        .users.*.addresses.*.zipcode is found with varying types: STRING, INT.
                                        Please, have a look to advanced settings JSON normalization to fix it.

    Pour éviter cela, vous pouvez par exemple utiliser l'option Normalize attributes (Normaliser les attributs) pour convertir l'attribut ayant le chemin .users.*.addresses en type ARRAY et l'attribut ayant le chemin users.*.addresses.*.zipcode en type INT, même si certaines valeurs retournées ont un type String. Vous pouvez également ajouter un attribut manquant, par exemple .users.*.active (vous pouvez ici le convertir en BOOLEAN car il retourne 'true' ou 'false').

    Vous pouvez également utiliser l'option Normalize arrays (Normaliser les tableaux) pour conserver uniquement les éléments OBJECT ayant le chemin .users.*.addresses, même si certaines adresses contiennent des types String.

Cette option est disponible lorsque l'option JSON est sélectionnée dans la liste Response body format de la vue Basic settings du composant.

Configuration de la source/cible du Client HTTP

Lorsqu'un Client HTTP est utilisé en tant que jeu de données source ou de destination dans votre pipeline, une option supplémentaire peut être activée lors de la récupération/de l'envoi de données depuis/vers votre serveur Web :
  • Die on error (status code different from 2xx) (Arrêter en cas d'erreur (si le code de statut n'est pas 2xx))

    Activez cette option si vous souhaitez que les codes de statut de réponses HTTP non réussies (différents de 2xx) retournent une erreur lors de l'exécution. Cette option est désactivée par défaut.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.