Beispiel: Plattform-REST-APIs zum Veröffentlichen eines Produkts mit einer SOAP-API verwenden

Sehen Sie sich dieses Beispielszenario an, um zu erfahren, wie Sie mithilfe der API Connect REST-APIs der Plattform ein Produkt veröffentlichen können, das eine SOAP-API enthält.

Dieses Beispiel veranschaulicht, wie eine Anforderung zum Veröffentlichen des Produkts formatiert wird, und enthält Beispieldateien, die die Produktdefinition, die API-Definition und die WSDL-Beschreibung der SOAP-API veranschaulichen.

Catalogs -API verwenden

Veröffentlichen Sie das Produkt über die API ConnectCatalogs Plattform-API:

  • Verwenden Sie die folgende Syntax, um ein Produkt in einem Katalog zu veröffentlichen:
    POST catalogs/{org}/{catalog}/publish
  • Um ein Produkt in einem Bereich in einem Katalog zu veröffentlichen, geben Sie den Bereich zusätzlich mit der folgenden Syntax an:
    POST catalogs/{org}/{catalog}/{space}/publish

Die Nutzdaten sind in beiden Fällen ein mehrteiliger, formcodierter Hauptteil, der drei erforderliche Teile und einen optionalen Teil enthält:

  • (Erforderlich) Eine Komponente namens product mit dem Medientyp application/yaml oder application/json, die die YAML-oder JSON-Quelle für das zu veröffentlichende Produkt enthält.
  • (Erforderlich) Mindestens ein Vorkommen eines Abschnitts mit dem Namen openapi mit dem Medientyp application/yaml oder application/json, der die YAML-oder JSON-Quelle für jede API im Produkt enthält.
  • (Für SOAP-APIs erforderlich) Ein oder mehrere Vorkommen eines Abschnitts mit dem Namen wsdl mit dem Medientyp application/wsdl, application/wsdl+xml, text/xmloder application/zip , der die WSDL-Definitionen (und gegebenenfalls referenzierte XSD-Dateien) enthält, die dem API-Inhalt zugeordnet sind.
  • (Optional) Ein Teil mit dem Namen gateway_service_urls mit dem Medientyp application/yaml oder application/json , bei dem es sich um ein YAML-oder JSON-Array von URLs handelt, um eine Untergruppe der konfigurierten Gateway-Services im Katalog oder Bereich als Veröffentlichungsziele anzugeben. Diese URLs können mit den folgenden Aufrufen abgerufen werden:
    • Für einen Katalog:
      GET /api/catalogs/{org}/{catalog}/configured-gateway-services
    • Für einen Bereich:
      GET /spaces/{org}/{catalog}/{space}/configured-gateway-services

Im product -Inhalt ist die Form der Verweise auf APIs im Abschnitt apis von Bedeutung. Jede API-Referenz muss die Eigenschaft name anstelle des Formulars $ref verwenden, das in anderen Situationen auftreten kann. Das folgende Beispiel zeigt ein Produkt, das auf die globalweather API-Version 1.0.0 im richtigen Format verweist:

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

Beispiel für eine Veröffentlichungsoperation mit cURL

In diesem Beispiel wird ein Produkt, das eine SOAP-API enthält, im Sandbox -Katalog der onlinebanking -Providerorganisation veröffentlicht, wobei die Option curl -F verwendet wird, um eine Gruppe von formularcodierten Nutzdatenteilen und das Präfix @ zum Lesen des Inhalts für jeden Teil aus einer Datei zu erstellen. Beachten Sie den Abschnittsnamen (product, openapi, wsdl) und den Inhaltstyp jedes Abschnitts, der durch den Wert type= angegeben wird.

In diesem Beispiel wurde das Zugriffstoken zuvor abgerufen und in eine Umgebungsvariable namens TOKENeingefügt. Der Befehl wird zur besseren Lesbarkeit auf mehrere Zeilen aufgeteilt, muss aber in einer einzigen Zeile eingegeben werden.

Anfrage:

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

Antwort:

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"

Die Anforderung gibt drei Dateien an, die in diesem Beispiel als Referenz enthalten sind: