Altova FlowForce Server 2024 Advanced Edition

Publier du JSON dans le service Web FlowForce

Accueil Préc Haut Suivant

Cet exemple vous montre comment créer un service Web FlowForce qui accepte les requêtes POST transportant des données JSON dans le corps de requête HTTP. De plus, il illustre comment appeler le service Web depuis un client comme MapForce.

 

Dans cet exemple, le service Web sera configuré pour accepter des données JSON. Vous pourriez aussi publier du XML ou d'autres contenus dans un service créé avec FlowForce Server d'une manière comme celle affichée ci-dessous. Le service Web est censé être très simple afin de pouvoir simplement accepter des données JSON et l'enregistrer localement sans autre traitement. Il est possible s'étendre encore la tâche pour valider les données JSON avec RaptorXML Server, ou la traiter bien que cela ne sera pas effectué dans cet exemple.

 

Cet exemple illustre spécifiquement le cas où des données sont publiées dans le corps de la requête HTTP, pas en tant que paramètre. Pour un exemple qui invoque un service Web avec des paramètres, voir Exposer une tâche en tant que service Web.

 

Conditions préalables

Licences requises : FlowForce Server, MapForce Enterprise Edition.

 

Remarques

FlowForce Server permet de créer rapidement le service Web. MapForce Enterprise Edition agit en tant qu'un client qui appelle le service Web créé avec FlowForce Server. Vous pouvez aussi utiliser un client différent et obtenir le même résultat.

 

Les services FlowForce Server Web Server et FlowForce Server doivent écouter l'adresse de réseau et le port configurés

Vous détenez un compte d'utilisateur FlowForce Server avec des permissions dans un des conteneurs (par défaut, le conteneur /public est accessible à tout utilisateur authentifié)

Cette tâche enregistre des données d'entrée reçus par le service Web dans un répertoire de travail local, C:\FlowForceExamples\PostJson. Ce répertoire (ou un répertoire semblable) doit exister sur l'appareil sur lequel FlowForce Server est exécuté, et votre système d'exploitation doit avoir des droits pour écrire dans ce répertoire.

 

Créer la tâche FlowForce

Se connecter à l'interface d'administration de FlowForce Server Web, ouvrir le conteneur /public/Examples, puis cliquer sur Créer tâche. Ensuite, saisir un nom et en option, une description pour le service Web que vous créez.

 

Note:Le conteneur public/Examples devrait déjà exister si vous avez suivi les exemples précédents ; sinon, le créer en utilisant la commande Créer | Créer Conteneur.

 

fs_post_json_01

Afin que la tâche puisse traiter les données POST en tant que contenu arbitraire, elle doit avoir exactement un paramètre de type stream. Pour créer les paramètres, cliquer sur Ajouter des paramètres add , saisir un nom de paramètre (dans cet exemple, "data"), et sélectionner stream en tant que type de données.

fs_post_json_02

Ensuite, ajouter une nouvelle étape d'exécution et la configurer comme suit :

fs_post_json_03

L'étape d'exécution ci-dessus appelle la fonction copy intégrée FlowForce. L'expression affichée dans la fenêtre de texte "Source" convertit l'entrée reçu par le service Web dans un fichier en utilisant la fonction d'expression as-file (Veuillez vous rappeler que le paramètre d'entrée a été nommé data dans une étape précédente). Pour obtenir cette expression automatiquement, cliquer sur la touche ff_ic_set_to à côté de la fenêtre de texte "Source", puis sélectionner data.

 

La fenêtre de texte "Target" contient une expression qui produit un nom de fichier unique à chaque fois que la tâche est invoquée. Pour obtenir le nom de fichier unique, la fonction d'expression instance-id de FlowForce est appelée ; c'est pourquoi, le nom de fichier JSON ressemblera à "file35.json", et le nombre sera différent avec chaque appel de tâche (correspondant à l'ID de cette instance de tâche FlowForce). Vous pouvez aussi saisir un chemin complet, mais il n'est pas nécessaire si le chemin "Working directory" est défini, tel qu'il a été fait dans cet exemple. Lorsque vous définissez le chemin de répertoire de travail, tout nom de fichier relatif sera résolu par rapport au chemin de répertoire de travail.

 

Le répertoire C:\FlowForceExamples\PostJSON (ou un répertoire semblable si vous avez modifié le chemin) doit exister et votre compte d'utilisateur du système d'exploitation doit disposer des droits pour pouvoir y écrire.

 

Sous "Service", cocher la case Rendre cette tâche disponible via HTTP, et saisir "PostJsonService" ou un nom semblable pour le nouveau service Web. Notez le nom du service ; vous en aurez besoin pour appeler le service Web.

fs_post_json_04

Sous "Identifiants", choisir un enregistrement d'identifiant existant ou spécifier un identifiant local (voir aussi Identifiants). Ceux-ci doivent être les identifiants du compte d'utilisateur sur le système d'exploitation sur lequel FlowForce Server est exécuté.

fs_deploy_mapping_05
Note :Ne pas confondre ces identifiants avec ceux utilisés pour pour accéder à l'interface d'administration Web de FlowForce Server.

 

Cliquer sur Enregistrer. Vous êtes maintenant prêt à appeler le nouveau service Web depuis un client.

 

Appeler le service Web depuis un navigateur

Vous pouvez appeler le service Web depuis un navigateur d'une des manières suivantes :

 

Se rendre sur Accueil, puis cliquer sur Afficher tous les déclencheurs et les services actifs. Ensuite, cliquer sur l’URL de la tâche affichée dans la colonne "Info ».

Enter http://127.0.0.1:4646/service/PostJsonService dans la barre d'adresse du navigateur. Noter que cette URL fonctionne uniquement si le service FlowForce Server écoute l’adresse d’hôte par défaut et le nom de port. Si vous avez défini d’autres paramètres d’hôte et de port dans la Page de Configuration, modifier l’adresse.

Si vous définissez le champ optionnel Nom d’hôte du FlowForce Server depuis la Page de configuration, vous pouvez exécuter l'appel de service Web directement depuis la page de configuration de la tâche, en cliquant sur la touche fs_ic_call_ws adjacente à la case à cocher Rendre cette tâche disponible via HTTP. Sinon la touche ne sera pas affichée.

 

Lorsque vous êtes invité à accéder au service Web, fournissez les mêmes identifiants que vous utilisez pour vous connecter à FlowForce Server.

 

Vous ne fournirez vos identifiants d’utilisateur FlowForce Server pour l’authentification HTTP qu’à des fins de test. Pour la production, il est recommandé de créer un nouvel utilisateur FlowForce, d’accorder la permission Service - Utiliser à cet utilisateur dans le conteneur dans lequel la tâche est située, puis d’accéder au service Web avec le compte d’utilisateur correspondant. Pour désactiver l'authentification HTTP et rendre le service Web public, accorder la permission Service - Utiliser à l’utilisateur Anonymous, voir Comment fonctionnent les permissions.

 

Étant donné que la tâche a été configurée de telle façon à prévoir un stream en tant que paramètre, vous êtes invité à saisir la valeur u paramètre dans le navigateur. Cliquez sur Naviguer et sélectionnez le fichier JSON à soumettre dans la requête POST.

fs_post_json_05

Si vous cliquez sur Soumettre, FlowForce Server traite la tâche et produit la réponse dans le navigateur.

 

Si la tâche est exécutée avec succès, le navigateur affiche "true" et le fichier JSON est enregistré dans le répertoire de travail C:\FlowForceExamples\PostJson. Autrement, si vous voyez une erreur d'exécution, veuillez vous référer au journal de tâche pour plus de détails, voir Consulter le journal de tâche.

 

Appeler le service Web depuis MapForce

Vous pouvez aussi appeler le service Web depuis un client autre que le navigateur Web, for example, from MapForce Enterprise Edition.

 

1.Dans le menu Fichier, cliquer sur Nouveau pour créer un nouveau mappage.

2.Dans le menu Output, cliquez sur Built-in Execution Engine.

3.Dans le menu Insérer, cliquer sur Fonction Service Web. Le dialogue "Paramètres d'appel de Service Web" s'ouvre.

4.Cliquer sur Manuel, choisir POST en tant que méthode de requête, et saisir l'URL du service web dans le champ URL. Il s'agit de la même URL que celle qui a été utilisée pour tester le service Web depuis le navigateur.

fs_post_json_06

5.Cliquer sur la touche Édition à côté de l'encadré "Paramètres de sécurité HTTP", et sélectionnez la case à cocher Authentification dynamique. Ceci permet de fournir les identifiants de manière interactive en tant paramètres d'entrée au mappage quand le mappage est exécuté. Pour toute information sur l'option Utiliser identifiants, voir Identifiants dans les fonctions de mappage. Saisir un nom d'utilisateur et un mot de passe directement dans cette boîte de dialogue n'est pris en charge que pour la compatibilité ascendante et n'est pas recommandé.

fs_post_json_07

 

6.Cliquer sur OK pour fermer le dialogue. Le mappage maintenant ressemble à l'exemple suivant :

fs_post_json_08

7.Ajouter au mappage trois paramètres d'entrée en sélectionnant la commande de menu Insérer | Insérer entrée. Les deux premiers fourniront respectivement le nom d'utilisateur et le mot de passe. Le troisième fournira les données JSON.

 

fs_post_json_08a
8. Double-cliquez chacun des composants d'entrée ci-dessus, et entrez une valeur d'exécution design-time qui doit être utilisée pour prévisualiser ce mappage. Pour les deux premiers paramètres, saisissez le nom d'utilisateur et le mot de passe requis pour accéder au service Web - ils sont nécessaires pour exécuter le mappage, et, pour des raisons de sécurité, il n'est pas recommandé de les enregistrer dans le fichier de mappage. Pour le paramètre qui fournira les données JSON, saisissez quelques données échantillons JSON à être utilisées pour exécuter ce mappage au design time, comme celui affiché ci-dessous :

 

fs_post_json_09

Note :Les données échantillon JSON affichées ici sont très courtes, et servent de démonstration. Lorsque MapForce Server exécute le mappage, vous pouvez fournir les données JSON en tant que paramètres d'entrée dans le mappage depuis un fichier JSON réel.

 

9.Ajouter la sortie du mappage, en sélectionnant la commande de menu Insérer | Insérer la sortie.
fs_post_json_10
10.Glisser les fonctions charset-encode et mime-entity depuis la fenêtre Bibliothèques et établir les connexions comme indiqué ci-dessous. Vous devrez également ajouter deux constantes, en sélectionnant la commande de menu Insérer | Constante.
fs_post_json_11

Dans le mappage ci-dessus, l'entrée JSON est fournie dans le mappage par le biais d'un composant d'entrée simple. Les fonctions charset-encode et mime-entity sont des fonctions intégrées MapForce qui préparent le corps de la requête HTTP. Le code de statut retourné par le service Web est mappé dans le résultat retourné par le mappage.

 

La préparation du corps de la requête HTTP de manière non structurée comme indiqué ci-dessus n'est qu'un seul des nombreux moyens d'envoyer des données dans la requête POST. En ce qui concerne les structures JSON et XML, vous pouvez saisir le schéma JSON ou XML de la requête dans le dialogue "Paramètres d'appel de service Web" à la place. Dans ce cas, le corps du composant de service Web fournit des entrées de mappage (connecteurs) sur la base de la structure JSON/XML de la requête.

 

Vous pouvez maintenant exécuter le mappage avec MapForce, en cliquant sur l'onglet Sortie. Si une erreur se produit, elle est affichée dans la fenêtre Messages. Pour déboguer, il se peut que vous deviez contrôler également le journal FlowForce Server  (si la requête POST a atteint le serveur). Sinon, si l'exécution a réussi, les choses suivantes se produisent :

 

1.Le code de statut HTTP "200" s'affiche dans le volet Sortie.

2.Du côté du serveur, les données JSON soumises sont rédigées sur un fichier et enregistrées dans le répertoire C:\FlowForceExamples\PostJson.

 

Le comportement exact du mappage en cas d'erreur peut être configuré encore plus précisément depuis MapForce. De plus, le mappage peut être exécuté avec MapForce Server, ou être déployé sur FlowForce Server, et transformé en une tâche ou même un autre service Web. Pour plus d'informations, veuillez vous référer à la documentation MapForce https://www.altova.com/fr/documentation.

© 2017-2023 Altova GmbH