OSB 12c : Exposition d'un service REST

Lors d’un précédent article, nous avions détaillé l’appel d’un service de type REST depuis un flux SOA à l’aide du nouveau connecteur adaptateur REST.
Dans ce post, nous allons voir comment exposer un service REST pouvant être invoqué à la fois en JSON et en XML.

1 – Génération du connecteur REST à l’aide du wizard

Ouvrir le projet.
Clic droit – ajouter un connecteur REST.

Choisir un nom pour le service.
Cocher les 2 options qui s’offrent à vous :
=> « Service will invoke components using WSDL interfaces » : permet de générer un WSDL et un XSD associés au service. Ce qui permet par la suite de manipuler du XML sans passer par le JSON path.
=> « Enforce XMLSchema Ordering » : réordonne le JSON dans le même ordre que les objets décrits dans le XSD.

Ensuite, il faudra définir :
– l’ensemble des ressources, dans notre cas, « HelloWorld ».
– les methodes HTTP associées à chacune des ressources (GET, PUT, POST, DELETE).
– les paramètres de requête et de réponse associées à chaque méthode ainsi que les codes HTTP de retour.

Définition des ressources

Lors de la définition des formats de requêtes/réponses, il est possible de définir un format de « body » à partir d’un exemple fourni à l’assistant en cliquant sur l’option « Define Schema for native format ».
define format

Sélectionner le « JSON Interchange Format » et définir le format du message à partir d’un exemple ainsi que le namespace et le nom de la balise racine.
define format

Puis, finalement, valider le « NXSD » proposé par le wizard.
Une fois cette étape terminée, cliquer sur « OK » puis « Terminer » pour générer le proxy service, le WSDL, le WADL et le XSD associés au service décrit lors des précédentes étapes.
Remarque : il est conseillé dans un premier temps de générer les ressources dans les répertoires par défaut et de procéder par la suite à un refactoring si besoin.

2 – Création du pipeline et flux de message

A ce niveau, le proxy service n’est pas encore utilisable. Il faut dans un premier temps générer le « pipeline » qui sera appelé lors de l’invocation du service.
Pour ce faire, réaliser un clic droit sur le projet et choisir « new -> pipeline ».
Choisir un nom au pipeline puis lors de la seconde étape, sélectionner le « WSDL » généré précédement par le wizard.
Décocher la case « Expose as a proxy service » nous ferons l’association entre les 2 ressources dans un second temps.

génération pipeline


Une fois le pipeline généré, il est désomais possible de manipuler le message comme si nous recevions du XML en utilisant du xpath ou des xquery, la transformation JSON/XML et XML/JSON étant réalisée de façon automatique par le connecteur en se basant sur le NXSD et le WSDL générés.
Par exemple, il est possible de récupérer le paramètre « name » d’entrée et de fabriquer une réponse comme celle-ci qui sera éventuellement retournée sour forme de JSON selon les besoin de l’utilisateur:

{concat("Hello ", $body/res:getHelloWorld_params/res:name/text(), " !!")}
génération de la réponse

3 – Utilisation du service

Voici ensuite 2 exemples d’appels réalisés à l’aide de postman, l’un pour récupérer une réponse au format JSON et l’autre en XML en fonction du besoin, le format étant spécifié au niveau de l’entête HTTP « accept ».

accept-json

accept-xml

Pour plus de détails, se référer à la documentation officielle.

1 réflexion sur “OSB 12c : Exposition d'un service REST”

  1. Ping : OSB et REST : Conversion nXSD de JSON vers XML - ArKZoYd

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *