Exemple: Utilisation des API REST de plateforme pour publier un produit contenant une API SOAP
Consultez cet exemple de scénario pour découvrir comment utiliser les API REST API Connect de la plateforme afin de publier un produit intégrant une API SOAP.
Cet exemple montre comment formater une demande de publication du produit et inclut des exemples de fichiers qui illustrent la définition du produit, la définition de l'API et la description WSDL de l'API SOAP.
Utilisation de l'API Catalogs
Publiez le produit à l'aide de l'API API Connect de Catalogs la plateforme :
- Pour publier un produit dans un catalogue, utilisez la syntaxe suivante:
POST catalogs/{org}/{catalog}/publish - Pour publier un produit dans un espace d'un catalogue, spécifiez l'espace avec la syntaxe suivante:
POST catalogs/{org}/{catalog}/{space}/publish
Dans les deux cas, la charge utile est un corps codé en plusieurs parties contenant trois parties obligatoires et une partie facultative:
- (Obligatoire) Partie nommée
productavec le type de supportapplication/yamlouapplication/json, contenant la source yaml ou JSON pour le produit à publier. - (Obligatoire) Une ou plusieurs occurrences d'une partie nommée
openapiavec le type de supportapplication/yamlouapplication/json, contenant la source YAML ou JSON pour chaque API du produit. - (Requis pour les API SOAP) Une ou plusieurs occurrences d'une partie nommée
wsdlavec le type de supportapplication/wsdl,application/wsdl+xml,text/xmlouapplication/zipcontenant les définitions WSDL (et les fichiers XSD référencés, le cas échéant) associés au contenu de l'API. - (Facultatif) Partie nommée
gateway_service_urlsavec le type de supportapplication/yamlouapplication/jsonqui est un tableau YAML ou JSON d'URL pour spécifier un sous-ensemble des services de passerelle configurés dans le catalogue ou l'espace en tant que cibles de publication. Ces URL peuvent être obtenues à l'aide des appels suivants:- Pour un catalogue:
GET /api/catalogs/{org}/{catalog}/configured-gateway-services - Pour un espace:
GET /spaces/{org}/{catalog}/{space}/configured-gateway-services
- Pour un catalogue:
Dans le contenu product , la forme des références aux API dans la section apis est importante. Chaque référence d'API doit utiliser la propriété name à la place du formulaire $ref qui peut apparaître dans d'autres situations. Voici un exemple illustrant un produit qui fait référence à l'API globalweather version 1.0.0 sous la forme correcte:
info:
version: 1.0.0
title: GlobalWeatherProduct
name: globalweatherproduct
plans:
...
apis:
globalweather1.0.0:
name: globalweather:1.0.0
...
Exemple d'opération de publication à l'aide de cURL
Cet exemple publie un produit contenant une API SOAP dans le catalogue Sandbox de l'organisation de type fournisseur onlinebanking , en utilisant l'option curl -F pour créer un ensemble de parties de contenu codées par formulaire et le préfixe @ pour lire le contenu de chaque partie d'un fichier. Notez le nom de la partie (product, openapi, wsdl) et le type de contenu de chaque partie donné par la valeur type= .
Dans cet exemple, le jeton d'accès a été extrait précédemment et placé dans une variable d'environnement nommée TOKEN. La commande est divisée en plusieurs lignes pour faciliter la lecture, mais elle doit être entrée sur une seule ligne.
Demande :
curl -v -k
-F "product=@globalweatherproduct_1.0.0.yaml;type=application/yaml"
-F "openapi=@globalweather_1.0.0.yaml;type=application/yaml"
-F "wsdl=@globalweather.wsdl;type=application/wsdl"
-H "Authorization: Bearer $TOKEN"
-H 'Content-Type: multipart/form-data'
-H 'Accept: */*' https://dev.apic.example.com/api/catalogs/onlinebanking/sandbox/publish
Réponse :
201 Created
{
"type": "product",
"api_version": "2.0.0",
"id": "d03129a4-9a99-4c88-85e6-d51bbf312164",
"name": "globalweatherproduct",
"version": "1.0.0",
"title": "GlobalWeatherProduct",
"state": "published",
"scope": "catalog",
"gateway_types": [
"datapower-api-gateway"
],
"billing_urls": [],
"api_urls": [
"https://dev.apic.example.com/api/catalogs/87227774-d297-4064-8908-b8f0b1db71a5/1bc8f4ba-4178-4a4b-93e8-96a8ca9667fd/apis/d5986b78-d556-4457-8c38-951c471f57fc"
],
"gateway_service_urls": [
"https://dev.apic.example.com/api/catalogs/87227774-d297-4064-8908-b8f0b1db71a5/1bc8f4ba-4178-4a4b-93e8-96a8ca9667fd/configured-gateway-services/a416f39d-39e1-484c-9f7e-4a599abefec8"
],
"oauth_provider_urls": [],
"plans": [
{
"title": "Default Plan",
"name": "default-plan",
"apis": [
{
"id": "d5986b78-d556-4457-8c38-951c471f57fc",
"name": "globalweather",
"title": "GlobalWeather",
"version": "1.0.0",
"url": "https://dev.apic.example.com/api/catalogs/87227774-d297-4064-8908-b8f0b1db71a5/1bc8f4ba-4178-4a4b-93e8-96a8ca9667fd/apis/d5986b78-d556-4457-8c38-951c471f57fc"
}
]
}
],
"visibility": {
"view": {
"type": "public",
"enabled": true
},
"subscribe": {
"type": "authenticated",
"enabled": true
}
},
"task_urls": [],
"created_at": "2021-12-15T07:35:40.295Z",
"updated_at": "2021-12-15T07:35:40.295Z",
"org_url": "https://dev.apic.example.com/api/orgs/87227774-d297-4064-8908-b8f0b1db71a5",
"catalog_url": "https://dev.apic.example.com/api/catalogs/87227774-d297-4064-8908-b8f0b1db71a5/1bc8f4ba-4178-4a4b-93e8-96a8ca9667fd",
"url": "https://dev.apic.example.com/api/catalogs/87227774-d297-4064-8908-b8f0b1db71a5/1bc8f4ba-4178-4a4b-93e8-96a8ca9667fd/products/d03129a4-9a99-4c88-85e6-d51bbf312164"
La demande spécifie trois fichiers, qui sont inclus avec cet exemple pour référence:
- Définition du produit
-F "product=@globalweatherproduct_1.0.0.yaml;type=application/yaml" - Définition de l'API
-F "openapi=@globalweather_1.0.0.yaml;type=application/yaml" - Description WSDL
-F "wsdl=@globalweather.wsdl;type=application/wsdl"