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

Objectif

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

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

nom=John&prenom=Rambo&age=55

Vue globale du point d’entrée :

alt
alt

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

  • Endpoint REST : “/talend/test”
  • REST API Mapping :
  • Output Flow : urlForm
  • Dans les options, on configure le schéma suivant :
alt
alt
  • Il ne faut pas oublier de spécifier « form » dans la colonne Commentaire pour l’ensemble des champs à extraire.
  • HTTP Verb : POST
  • URI Pattern : “/form”
  • Consomme : Form
  • Produit : (pour notre exemple, le WS ne retourne pas de réponse)
alt
alt

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 :

  • tFixedFlowInput : pour récupérer les paramètres reçus par le point d’entrée
  • tLogRow : pour afficher dans la console les éléments récupérés
alt
alt

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

alt
alt

Ensuite nous pouvons configurer le tFixedFlowInput :

  • Schéma :
alt
alt
  • Composant :
alt
alt
  • Ici, les valeurs des différentes colonnes vont prendre celles des variables de contexte

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 :

alt
alt
alt

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 :

  • urlForm.nom
  • urlForm.prenom
  • urlForm.age
alt
alt

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

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 :

alt
alt

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.

alt
alt

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 |
'----+------+---'

Consultant BI féru de nouvelles technologies. Blog personnel : https://robinfabre.github.io/blog/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store