Talend 6.4 : Extraction d’un message de type form dans un webservice REST

Posted on Tue, Sep 18, 2018 Talend ETL API REST Tuto

Objectif

Nous voulons pouvoir extraire les données reçues par notre webservice qui sont de type x-www-form-urlencoded

Données en entrée

Les données en entrée arrivent sous la forme suivante :

nom=John&prenom=Rambo&age=55

Construction du point d’entrée

Vue globale du point d’entrée :

tRESTRequest :

Nous créons pour notre exemple un point d’entrée de type REST. Nous utilisons le composant tRESTRequest avec les paramètres suivants :

tRunJob

Pour pouvoir configurer complètement ce composant, nous devons dans un premier temps configurer le job associer.

Dans notre exemple, le composant fait appel au job ws001_get_form. Ce dernier est très simpliste est contient les composants suivants :

Configuration des contextes :

Dans ws001_get_form, nous devons configurer 3 variables de contextes qui contiendront les valeurs reçues :

Ensuite nous pouvons configurer le tFixedFlowInput :

Nous en avons terminé avec ws001_get_form, nous pouvons donc revenir au tRunJob du point d’entrée.

Dans ce dernier, nous pouvons désormais configurer les paramètres :

On coche Transmettre tout le contexte.

Comme nous avons créé les variables de contexte dans ws001_get_form, ces dernières sont désormais accessibles dans le tableau Paramètre de contexte.

Il nous suffit de les rajouter avec le petit « + » en bas du tableau.

Pour leur valorisation, il nous faut prendre le nom des colonnes présentes dans le flux entrant.

Dans notre cas, cela sera :

Enfin dans Advanced settings, nous cochons Propagate the child result to the output schema (bonne pratique).

Test du WS

Nous pouvons à présent exécuter le point d’entrée. Il sera accessible à l’adresse suivante : http://localhost:8090/talend/test/form

Afin de pouvoir lui envoyer notre appel POST de type x-www-form-urlencoded, nous allons utiliser POSTMAN

Dans ce dernier, nous sélectionnons POST et nous renseignons l’url à droite.

Ensuite, nous nous rendons dans l’onglet Body puis sur x-www-form-urlencoded. Nous renseignons ensuite le tableau KEY/VALUE avec les celles gérées par notre WS :

Une fois tout configuré, nous pouvons envoyer la requête avec le bouton Send.

Si tout est OK, nous aurons Status : 202 Accepted en bas à droite.

Dans Talend, nous pouvons voir que ws001_get_form a bien reçu les données grâce à l’affichage du tLogRow :

Démarrage du job ws000_point_entree_test a 11:09 28/02/2019.[statistics] connecting to socket on port 3986[statistics] connected[WARN ]: org.eclipse.jetty.server.handler.AbstractHandler - No Server set for org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine$1@78bbaf83.----+------+---.|   tLogRow_1   ||=---+------+--=||nom |prenom|age||=---+------+--=||John|Rambo |55 |'----+------+---'