Exemplo: usando as APIs REST da plataforma para publicar um produto contendo uma API SOAP

Analise este cenário de exemplo para ver como você pode usar as APIs API Connect REST da plataforma para publicar um produto que contenha uma API SOAP.

Este exemplo demonstra como formatar uma solicitação para publicar o produto e inclui arquivos de amostra que ilustram a definição de produto, a definição de API, e a descrição WSDL da API SOAP

Usando a API Catalogs

Publique o produto usando a API API Connect da Catalogs plataforma:

  • Para publicar um produto em um catálogo, use a sintaxe a seguir:
    POST catalogs/{org}/{catalog}/publish
  • Para publicar um produto em um espaço dentro de um catálogo, especifique adicionalmente o espaço com a sintaxe a seguir:
    POST catalogs/{org}/{catalog}/{space}/publish

A carga útil em ambos os casos é um corpo multiparte, codificado por formulário contendo três partes necessárias e uma parte opcional:

  • (Necessário) Uma parte denominada product com tipo de mídia application/yaml ou application/json, contendo a origem yaml ou JSON para o produto a ser publicado.
  • (Obrigatório) Uma ou mais ocorrências de uma parte denominada openapi com tipo de mídia application/yaml ou application/json, contendo a origem YAML ou JSON para cada API no produto.
  • (Obrigatório para APIs SOAP) Uma ou mais ocorrências de uma parte denominada wsdl com o tipo de mídia application/wsdl, application/wsdl+xml, text/xmlou application/zip contendo as definições WSDL (e os arquivos XSD referenciados, se aplicável) associadas ao conteúdo da API
  • (Opcional) Uma parte denominada gateway_service_urls com tipo de mídia application/yaml ou application/json que é uma matriz YAML ou JSON de URLs para especificar um subconjunto dos serviços de gateway configurados no catálogo ou espaço como destinos de publicação. Essas URLs podem ser obtidas usando as chamadas a seguir:
    • Para um catálogo:
      GET /api/catalogs/{org}/{catalog}/configured-gateway-services
    • Para um espaço:
      GET /spaces/{org}/{catalog}/{space}/configured-gateway-services

Dentro do conteúdo do product , o formato das referências às APIs na seção apis é significativo Cada referência de API deve usar a propriedade name em vez do formulário $ref que pode ser exibido em outras situações Aqui está um exemplo mostrando um produto que se refere à API globalweather version 1.0.0 no formato correto:

info:
  version: 1.0.0
  title: GlobalWeatherProduct
  name: globalweatherproduct
plans:
  ...
apis:
  globalweather1.0.0:
    name: globalweather:1.0.0
...

Exemplo de operação de publicação usando cURL

Este exemplo publica um produto que contém uma API SOAP para o catálogo do Ambiente de simulação da organização do provedor onlinebanking , usando a opção curl -F para criar um conjunto de partes de carga útil codificadas por formulário e o prefixo @ para ler o conteúdo para cada parte de um arquivo. Observe o nome da parte (product, openapi, wsdl) e o tipo de conteúdo de cada parte fornecido pelo valor type= .

Neste exemplo, o token de acesso foi recuperado anteriormente e colocado em uma variável de ambiente denominada TOKEN. O comando é dividido em várias linhas para facilitar a leitura, mas deve ser inserido como uma única linha

Solicitação:

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

Resposta:

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"

A solicitação especifica três arquivos, que são incluídos com este exemplo para referência: