tRESTRequest - 6.3

Composants Talend Open Studio Guide de référence

EnrichVersion
6.3
EnrichProdName
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Open Studio for MDM
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Avertissement

Ce composant est adapté pour une utilisation au sein de la perspective Mediation du Studio Talend. Il requiert l'utilisation du nœud du Repository Service et des assistants de création de Services.

Fonction

Le tRestRequest est un composant côté serveur acceptant les requêtes HTTP et/ou HTTPS des clients et supportant les méthodes HTTP GET, POST, PUT, PATCH et DELETE.

Note

Pour activer le support de HTTPS, vous devez générer un keystore et ajouter quelques propriétés liées à la configuration de sécurité HTTPS dans le fichier org.ops4j.pax.web.cfg de votre conteneur Talend Runtime. Pour plus d'informations, consultez le Talend ESB Container Administration Guide (en anglais).

Objectif

Ce composant vous permet de recevoir les requêtes GET/POST/PUT/PATCH/DELETE des clients, du côté serveur.

Propriétés du tRESTRequest

Famille du composant

ESB/REST

 

Basic settings

REST Endpoint

Renseignez ce champ en saisissant l'emplacement de l'URI où le service Web RESTful sera accessible pour les requêtes.

Note

Si vous voulez que votre service soit disponible à la fois sur HTTP et HTTPS, renseignez ce champ avec un chemin relatif.

 

REST API Mapping

Cliquez sur le bouton [+] sous la table de mapping pour ajouter des lignes pour spécifier des requêtes HTTP :

Output Flow : Cliquez sur le bouton [...] afin de spécifier le nom d'un flux de sortie et configurez le schéma du flux de sortie dans la boîte de dialogue qui suit.

Le schéma n'est pas obligatoire, donc, si vous ne devez pas passer des paramètres supplémentaires au composant tRESTRequest, vous pouvez laisser le schéma vide. Cependant, vous devez alimenter le schéma si vous avez des paramètres URI Path définis dans le champ URI Pattern ou si vous devez ajouter des paramètres facultatifs de requêtes, tels que URI Query, HTTP Header ou Form parameters à l'URI spécifiée dans le champ REST Endpoint.

Ajouter un schéma dont le nom est body permet de récupérer le corps de la requête des méthodes POST ou PUT. Les types Document, String et Byte[] sont supportés.

Si vous spécifiez des paramètres d'URI dans le schéma du flux de sortie, vous devez définir le type de paramètre dans le champ Comment du schéma. Par défaut, si vous laissez le champ Comment vide, le paramètre est considéré comme un paramètre Path. Voici une liste des valeurs supportées dans Comment :

  • vide ou path correspond au paramètre par défaut @PathParam,

  • query correspond à @QueryParam,

  • form correspond à @FormParam,

  • header correspond à @HeaderParam.

  • matrix correspond à @MatrixParam.

  • multipart correspond @Multipart de CXF, représentant le corps de la requête. Il peut être utilisé avec la méthode POST ou PUT HTTP.

Note

Il est recommandé de définir les valeurs par défaut de vos paramètres facultatifs (Header, Query, Form). pour ce faire, renseignez les colonnes Default du schéma.

HTTP Verb : Sélectionnez une méthode HTTP (GET/POST/PUT/PATCH/DELETE/OPTIONS/HEAD) dans la liste.

URI pattern : Renseignez ce champ avec les URIs RESTful décrivant la ressource.

Consumes : Sélectionnez dans la liste le type de format du contenu consommé que le composant utilise, entre XML or JSON, XML, JSON, Form, Multipart et Any lorsque la méthode HTTP est POST, PUT ou PATCH.

Produces : Lorsque la méthode HTTP est GET, POST, PUT, PATCH ou DELETE, sélectionnez dans la liste le type de format du contenu produit que le composant utilise, entre XML or JSON, XML, JSON, HTML et Any, ou sélectionnez <oneway> dans la liste pour accepter les requêtes à sens unique.

Streaming : Cochez cette case pour mettre en flux les données de réponse par morceaux, afin que les grands volumes de données puissent être traités efficacement.

 Use Service Locator

Cochez cette case pour activer le Service Locator. Cela maintient la disponibilité du service et permet de répondre aux demandes et de respecter les (SLAs). Spécifiez l'espace de noms du Service ainsi que le nom du Service dans les champs correspondants.

 Use Service Activity Monitor

Cochez cette case pour activer le Service Activity Monitor. Il capture les événements et stocke les informations afin de faciliter les analyses en profondeur de l'activité des services et de suivre les messages via une transaction métier. Cette option peut être utilisée, entre autres, pour analyser le temps de réponse du service, identifier les modèles de trafic ou effectuer une analyse de cause racine.

 

Use Authentication (ESB runtime only)

Cochez cette case pour activer l'option d'authentification dans ce service. Sélectionnez Basic HTTP ou SAML Token. Cette option fonctionne uniquement dans le Runtime.

 

Use Business Correlation

Cochez cette case pour activer l'option de corrélation, afin que les appels en chaîne de services soient groupés sous le même ID de corrélation ID. Le tRESTRequest extrait l'ID de corrélation de l'en-tête de la requête et le stocke dans la variable du composant pour usage ultérieur dans le flux.

Si cette option n'est pas activée du côté client, un ID de corrélation est automatiquement généré dans le tRESTRequest.

Advanced settings

Log messages

Cochez cette case pour enregistrer l'échange de messages entre le service et le consommateur.

 

Wrap JSON Request

Cochez cette case pour entourer la requête JSON d'un élément root.

 

Convert JSON values to String in response

Cochez cette case pour convertir les valeurs JSON en format String dans la réponse.

Service Locator Customer Properties

Cette table apparaît lorsque la case Use Service Locator est cochée. Vous pouvez ajouter autant de lignes que nécessaire afin de personnaliser les propriétés correspondantes. Saisissez entre guillemets le nom et la valeur de chaque propriété dans le champ Property Name et Property Value respectivement.

 

Service Activity Customer Properties

Cette table apparaît lorsque la case Use Service Activity Monitor est cochée. Vous pouvez ajouter autant de lignes que nécessaire afin de personnaliser les propriétés correspondantes. Saisissez entre guillemets le nom et la valeur de chaque propriété dans le champ Property Name et Property Value respectivement.
 

tStatCatcher Statistics

Cochez cette case pour collecter les données de log, aussi bien au niveau du Job qu'au niveau de chaque composant.

Global Variables

NB_LINE : nombre de lignes traitées. Cette variable est une variable After et retourne un entier.

URI : URI de la requête REST. Cette variable est une variable Flow et retourne une chaîne de caractères.

URI_BASE : URI de base de la requête REST. Cette variable est une variable Flow et retourne une chaîne de caractères.

URI_ABSOLUTE : URI absolue de la requête REST. Cette variable est une variable Flow et retourne une chaîne de caractères.

HTTP_METHOD : méthode HTTP. Cette variable est une variable Flow et retourne une chaîne de caractères.

ATTACHMENT_HEADERS : en-têtes des pièces jointes de la requête REST. Cette variable est une variable Flow et retourne une liste des valeurs des en-têtes des pièces jointes.

ATTACHMENT_FILENAMES : nom des fichiers des pièces jointes de la requête REST. Cette variable est une variable Flow et retourne tous les noms de fichiers des pièces jointes.

PRINCIPAL_NAME : nom du Principal de la requête REST. Cette variable est une variable Flow et retourne une chaîne de caractères.

CORRELATION_ID : l'ID de corrélation par lequel regrouper les appels de services en chaîne. Cette variable est une variable Flow et retourne une chaîne de caractères.

ERROR_MESSAGE : message d'erreur généré par le composant lorsqu'une erreur survient. Cette variable est une variable After et retourne une chaîne de caractères. Cette variable fonctionne uniquement si la case Die on error est décochée, si le composant a cette option.

Une variable Flow fonctionne durant l'exécution d'un composant. Une variable After fonctionne après l'exécution d'un composant.

Pour renseigner un champ ou une expression à l'aide d'une variable, appuyez sur les touches Ctrl+Espace pour accéder à la liste des variables. A partir de cette liste, vous pouvez choisir la variable que vous souhaitez utiliser.

Pour plus d'informations concernant les variables, consultez le Guide utilisateur du Studio Talend.

Utilisation

Ce composant permet d'exposer un Job Talend en tant que service et de transmettre une requête à un service dans un Job puis retourne les résultats du Job en tant que réponse du service.

Le composant tRESTRequest doit être utilisé avec le tRESTResponse afin de fournir les résultats d'un Job en tant que réponse, dans le cas d'une communication de style requête-réponse.

Limitation

L'utilisation des variables de contexte pour les endpoints dynamiques ou les espaces de noms du Service Locator fonctionne uniquement dans le Studio. Elle n'est pas supportée dans le Runtime.

Scénario 1 : Service REST acceptant des requêtes HTTP GET et envoyant des réponses

Ce scénario décrit le processus d'acceptation d'une requête HTTP du client, son traitement et l'envoi de sa réponse.

Configurer le composant tRESTRequest

  1. Déposez les composants suivants de la Palette dans l'espace de modélisation graphique : un tRESTRequest, deux tXMLMap et deux tRESTResponse.

  2. Double-cliquez sur le composant tRESTRequest dans l'espace de modélisation graphique afin d'afficher sa vue Basic settings.

  3. Dans le champ REST Endpoint, saisissez l'URI à laquelle le service Web REST sera accessible pour les requêtes, par exemple "http://192.168.0.235:8088/user".

    Note

    Si vous voulez que votre service soit disponible à la fois sur HTTP et HTTPS, renseignez ce champ avec un chemin relatif. Par exemple, si vous saisissez "/test", votre service sera disponible à la fois sur http://<EndpointHTTPParDéfaut>/test et https://<EndpointHTTPSParDéfaut>/test, à condition que vous ayez configuré votre conteneur d'exécution pour supporter l'HTTPS. Pour plus d'informations, consultez le Talend ESB Container Administration Guide (en anglais).

  4. Cliquez sur le bouton [+] pour ajouter une ligne dans la table REST API Mapping.

  5. Sélectionnez la nouvelle ligne et cliquez sur le bouton [...] de la colonne Output Flow afin d'ajouter un schéma pour le flux de sortie.

    Dans ce scénario, nommez le flux de sortie GetOneUser.

  6. Cliquez sur le bouton [+] afin d'ajouter une ligne id au schéma. Cliquez sur OK pour sauvegarder le schéma.

  7. Sélectionnez GET dans la colonne HTTP Verb.

  8. Dans la colonne URI Pattern, saisissez "/{id}/".

  9. De la même manière, ajoutez une ligne dans la table REST API Mapping et nommez ce schéma GetUserNumber. Ajoutez une ligne string de type String au schéma. Saisissez query dans le champ Comment pour ajouter à la requête le paramètre des numéros.

    Sélectionnez GET dans la liste de la colonne HTTP Verb. Renseignez le champ dans la colonne URI Pattern en saisissant "/number".

Configurer le premier composant tXMLMap

  1. Reliez le composant tRESTRequest au tXMLMap à l'aide d'un lien Row > GetOneUser.

  2. Double-cliquez sur le tXMLMap dans l'espace de modélisation graphique pour ouvrir le Map Editor.

  3. Cliquez sur le bouton [+] en haut à droite afin d'ajouter une table de sortie et nommez-la ResponseUsers.

  4. Cliquez sur le bouton [+] en bas à droite pour ajouter deux colonnes en sortie.

    Nommez la première colonne body et, dans la colonne Type, sélectionnez Document.

    Nommez la seconde colonne string et, dans la colonne Type, sélectionnez String.

  5. Cliquez-droit sur le nœud root et sélectionnez Create Sub-Element pour créer un sous-élément. Nommez le sous-élément foo dans la boîte de dialogue qui s'ouvre.

  6. Cliquez-droit sur le nœud foo et sélectionnez As loop element.

  7. Sélectionnez la colonne id de la table GetOneUser et déposez-la dans le champ Expression du nœud foo dans la table ResponseUsers.

  8. Cliquez sur OK afin de sauvegarder les paramètres.

Configurer le second composant tXMLMap

  1. Reliez le tRESTRequest à l'autre tXMLMap à l'aide d'un lien Row > GetUserNumber.

  2. Double-cliquez sur le tXMLMap dans l'espace de modélisation graphique pour ouvrir le Map Editor.

  3. Cliquez sur le bouton [+] en haut à droite afin d'ajouter une table de sortie et nommez-la ResponseUserNumber.

  4. Cliquez sur le bouton [+] en bas à droite pour ajouter une colonne de sortie.

    Nommez la première colonne body et, dans la colonne Type, sélectionnez Document.

  5. Cliquez-droit sur le nœud root et sélectionnez Create Sub-Element pour créer un sous-élément. Nommez le sous-élément number dans la boîte de dialogue qui s'ouvre.

  6. Cliquez-droit sur le nœud number et sélectionnez As loop element.

  7. Sélectionnez la colonne string de la table GetUserNumber et déposez-la dans le champ Expression du nœud number dans la table ResponseUserNumber.

  8. Cliquez sur OK afin de sauvegarder les paramètres.

Configurer le composant tRESTResponse

  1. Reliez le tXMLMap à l'un des tRESTResponse à l'aide d'un lien Row > ResponseUsers.

    Le schéma défini dans le tXMLMap est automatiquement récupéré par le tRESTResponse.

  2. Sélectionnez OK(200) dans la liste Return status code.

  3. Laissez les autres paramètres tels qu'ils sont.

  4. Reliez le tRESTRequest à l'autre tRESTResponse à l'aide d'un lien Row > GetUserNumber.

Sauvegarder et exécuter le Job

  1. Sauvegardez le Job et appuyez sur F6 pour l'exécuter.

  2. Ouvrez votre navigateur si vous souhaitez tester le service.

    La requête HTTP demandant l'ID d'un utilisateur est acceptée par le service REST et la réponse HTTP est retournée au serveur.

  3. Répétez cette étape et saisissez http://localhost:8088/user/number?string=123 dans la barre d'adresse. Appuyez sur la touche Entrée.

    Vous pouvez constater que 123 est retourné dans la réponse.

Scénario 2 : Utiliser les paramètres URI Query pour explorer les données d'une base de données

Ce scénario décrit comment utiliser les paramètres URI query dans le tRESTRequest afin d'explorer les données d'une base de données et d'envoyer la réponse via le tRESTResponse.

Pour ce faire, vous devez créer deux sous-jobs connectés à l'aide d'un lien OnSubjobOk. Ainsi, les deux sous-jobs seront exécutés séquentiellement. Pour plus d'informations concernant les connexions Trigger, consultez le Guide utilisateur du Studio Talend. Le premier sous-job crée et alimente la base de données. Le second permet d'explorer la base de données via le service REST.