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
productcom tipo de mídiaapplication/yamlouapplication/json, contendo a origem yaml ou JSON para o produto a ser publicado. - (Obrigatório) Uma ou mais ocorrências de uma parte denominada
openapicom tipo de mídiaapplication/yamlouapplication/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
wsdlcom o tipo de mídiaapplication/wsdl,application/wsdl+xml,text/xmlouapplication/zipcontendo as definições WSDL (e os arquivos XSD referenciados, se aplicável) associadas ao conteúdo da API - (Opcional) Uma parte denominada
gateway_service_urlscom tipo de mídiaapplication/yamlouapplication/jsonque é 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
- Para um catálogo:
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:
- Definição do produto
-F "product=@globalweatherproduct_1.0.0.yaml;type=application/yaml" - Definição da API
-F "openapi=@globalweather_1.0.0.yaml;type=application/yaml" - Descrição WSDL
-F "wsdl=@globalweather.wsdl;type=application/wsdl"