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 product avec le type de support application/yaml ou application/json, contenant la source yaml ou JSON pour le produit à publier.
  • (Obligatoire) Une ou plusieurs occurrences d'une partie nommée openapi avec le type de support application/yaml ou application/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 wsdl avec le type de support application/wsdl, application/wsdl+xml, text/xmlou application/zip contenant 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_urls avec le type de support application/yaml ou application/json qui 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

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: