Appel d'un service REST à l'aide de JavaScript
Appelez un service REST à partir d'une tâche de
script dans un flux de services.
Ainsi, il est possible
d'appeler des opérations de service ne pouvant pas être
sélectionnées en tant qu'implémentation d'un service dans un flux de
services dans Process Designer pour le Web.
Pourquoi et quand exécuter cette tâche
Procédure
- Assurez-vous que vous disposez d'une copie locale de la spécification OpenAPI (anciennement Swagger) pour le service REST et de toutes les données d'identification d'appel nécessaires pour pouvoir appeler le service REST.
- A l'aide de Web
Process Designer,
créez un service externe et détectez quelles sont les
opérations prises en charge :
- Dans votre application de processus, sélectionnez Services > + > Service externe > Détecter un service existant puis sélectionnez le fichier de spécification OpenAPI local comme entrée. Pour plus d'informations sur la détection d'un service REST externe, voir Appel d'un service REST.
- Si des erreurs sont signalées pour des opérations, il n'est pas possible d'appeler ces dernières à partir d'une tâche de service. Si l'opération de service détectée à appeler peut être sélectionnée en tant qu'implémentation d'une tâche de service dans un flux de services, sachez qu'il s'agit du moyen le plus simple. Toutefois, si vous souhaitez utiliser des types autres qu'application/json, vous devez utiliser l'API JavaScript pour appeler le service.
- Pour trouver les informations dont vous avez besoin sur le service REST que vous souhaitez appeler, comme le nom de l'opération, les paramètres (y compris les en-têtes), les exigences de sécurité et la structure de l'objet réponse, cliquez sur l'onglet Source du Service externe pour afficher la source de spécification OpenAPI. Pour plus d'informations sur le service, consultez la configuration du serveur REST pour le service externe.
- Consultez le certificat serveur
du service REST à appeler. En utilisant JavaScript, vous pouvez remplacer toute configuration SSL spécifiée comme faisant partie du serveur REST.
- Si le certificat serveur est signé par une autorité de certification publique, vous pouvez utiliser la configuration SSL prédéfinies nommée PublicInternetSSLSettings.
- Si le certificat serveur n'est pas signé par une des autorités de certification publiques incluses dans la configuration SSL prédéfinie, un administrateur doit créer une nouvelle configuration SSL pour ce service et importer le certificat serveur dans un nouveau magasin de clés de confiance. Pour plus d'informations sur l'administration des configurations SSL, voir Création d'une configuration SSL (Secure Sockets Layer) et Extraction de signataires à partir d'un port SSL distant.
- Si vous disposez déjà d'un flux de services, sélectionnez-le. Sinon, créez un flux de services en cliquant sur Services > + > Flux de services. Pour plus d'informations sur la création d'un flux de services, voir Création d'un flux de services.
- Dans Web Process Designer, ajoutez une tâche de script à votre flux de services.
- Ajoutez du code JavaScript à la tâche de script pour effectuer
les actions suivantes.
- Créez une instance de l'objet de demande. Par exemple :
var request = new BPMRESTRequest(); - Définissez les attributs de l'objet de demande comme nécessaire, tels que le nom de service externe obligatoire, le nom de l'opération, les en-têtes HTTP et les paramètres de l'opération, ainsi que les attributs facultatifs tels que les données d'identification et le nom de configuration SSL. Les attributs que vous indiquez dans l'objet de demande remplacent les valeurs correspondantes qui sont indiquées comme faisant partie du serveur REST pour le service externe dans Process Designer.
L'objet de demande présente les attributs suivants :
- externalServiceName
- Nom du service REST. Par exemple :
request.externalServiceName = "language-translator-v2"; - operationName
- Si le fichier de spécification OpenAPI indique un operationId pour l'opération que vous souhaitez appeler, vous devez l'indiquer comme operationName, sinon, vous devez indiquer httpMethod et path.
Par exemple :
request.operationName="checkout"; - httpMethod et path
- Si le fichier de spécification OpenAPI n'indique pas d'operationId pour l'opération, pour identifier l'opération à appeler, vous devez indiquer la méthode et le chemin HTTP au lieu de la propriété operationName.
Par exemple :
request.httpMethod="GET"; request.path="/v1/orders"; - endpointAddress
- En option, vous pouvez remplacer le schéma, le nom d'hôte, le port et le chemin de base indiqués dans le fichier de spécification OpenAPI. Par exemple :
request.endpointAddress = "https://localhost:9080/restBasePath"; - httpHeaders
- Objet JSON qui spécifie les en-têtes HTTP. Par exemple :
Pour formData :request.httpHeaders = {"Content-Type": "application/json", "Accept": "text/plain"};- S'il inclut un fichier, spécifiez le type de contenu multipart/form-data.
- S'il n'inclut pas de fichier, spécifiez le type de contenu multipart/form-data ou application/x-www-form-urlencoded.
- parameters
- Objet JSON contenant tous les paramètres nécessaires à l'opération.
Par exemple :
request.parameters = {"priority": "high", "customer": "Max", "age" : "23"}; - requestTimeout
- Temps d'attente en millisecondes d'expiration de la demande.
Par exemple :
request.requestTimeout = 2000; - responseTimeout
- Temps d'attente en millisecondes d'expiration de la réponse.
Par exemple :
request.responseTimeout = 7200; - username et password
- Nom d'utilisateur et mot de passe, lors de l'utilisation de l'authentification de base. Par exemple :
request.username = "user"; request.password = "password"; - invocationCredential
- Fournissez les données d'identification d'appel au lieu de username et password pour l'authentification de base. Par exemple :
request.invocationCredential = "MyAuthenticationAlias"; - sslConfiguration
- Nom de la configuration SSL à utiliser. Par exemple :
request.sslConfiguration = "MySSLConfiguration";
Important : Transmettez les valeurs correctes requises pour que l'appel REST puisse aboutir. IBM® BPM transmet des valeurs au service REST sans les valider. - Appelez la fonction tw.system.invokeREST() sur
l'objet de demande, en affectant le résultat à un nouvel objet de
réponse de type BPMRESTResponse(). Par exemple :
var response = tw.system.invokeREST(request);Conseil : Si l'erreur suivante est générée :
vous devez demander à l'administrateur de créer une configuration SSL et importer le certificat serveur, comme cela est décrit à l'étape 3.b.javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed ... - Traitez la réponse, selon vos besoins.
- Créez une instance de l'objet de demande. Par exemple :
- Cliquez sur Sauvegarder ou sur Terminer la modification.
- Transmission de paramètres d'entrée
Comment utiliser JavaScript pour spécifier différents paramètres d'entrée pour un service REST - Spécifier l'authentification, modifier les informations de liaison et travailler avec les en-têtes de réponse
Comment utiliser JavaScript pour spécifier des informations d'authentification pour les services REST, remplacer les informations de liaison de service externe et travailler avec des en-têtes de réponse. - Transmission des types de fichiers
Comment utiliser JavaScript pour appeler les services REST qui ont des paramètres d'entrée ou une réponse de type file.
Rubrique parent : Appel d'un service REST