Tutoriel Lightweight Gateway
Essayez la Lightweight Gateway en utilisant la définition de l'API fournie pour créer un produit et le publier, puis testez l'API.
Télécharger le kit d'outils CLI et se connecter
Ce tutoriel peut être réalisé à l'aide de l'interface utilisateur ou de la boîte à outils CLI API Connect . Les instructions suivantes concernent la boîte à outils.
- Téléchargez la boîte à outils et configurez-la comme expliqué dans Téléchargement de la boîte à outils.
- Connectez-vous à API Connect comme expliqué dans Logging in the toolkit.
Créer un catalogue à utiliser avec ce tutoriel
Lorsque vous créez un catalogue, le Lightweight Gateway lui est automatiquement associé.
Créez un catalogue en utilisant le fichier de données catalog.yaml :
./apic -s <platform_endpoint_url> catalogs:create -o <org_name> catalog.yaml
Fichier de données : Créez un fichier YAML appelé catalog.yaml avec le contenu suivant.
name: previewcatalog
Exemple :
- Commande :
./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com catalogs:create -o lwgw-demo catalog.yaml - Réponse :
previewcatalog https://platform-api.us-east-a.apiconnect.automation.ibm.com/api/catalogs/1273ce81-ef2c-4d01-96c4-5f33c1af119e/e80bfea1-bf1d-4af1-9d60-4fa1c16e836f
Activez les services Lightweight Gateway dans le catalogue. Pour plus d'informations, voir ... /com.ibm.apic.apionprem.doc/create_env.html.
Ajouter un profil client TLS à l'organisation proPreviewcOrg.yamlvider
Créez un profil de client TLS et ajoutez-le à votre organisation de fournisseurs. Le profil client TLS est utilisé pour l'authentification lorsque l'API est invoquée.
- Créez un profil de client TLS à l'aide du fichier tlsclientprofile.yaml et enregistrez le fichier
TLS_PROFILE_URLdans une variable d'environnement :TLS_PROFILE_URL=$(./apic -s <platform_endpoint_url> tls-client-profiles:create -o <org_name> tlsclientprofile.yaml --format json | jq -r '.url')Fichier de données : Créez un fichier YAML appelé tlsclientprofile.yaml avec le contenu suivant :
ciphers: - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 - TLS_AES_128_GCM_SHA256 - ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 - ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 - ECDHE_ECDSA_WITH_AES_256_CBC_SHA - ECDHE_ECDSA_WITH_AES_128_CBC_SHA - ECDHE_RSA_WITH_AES_256_GCM_SHA384 - ECDHE_RSA_WITH_AES_256_CBC_SHA384 - ECDHE_RSA_WITH_AES_128_GCM_SHA256 - ECDHE_RSA_WITH_AES_128_CBC_SHA256 - ECDHE_RSA_WITH_AES_256_CBC_SHA - ECDHE_RSA_WITH_AES_128_CBC_SHA - DHE_RSA_WITH_AES_256_GCM_SHA384 - DHE_RSA_WITH_AES_256_CBC_SHA256 - DHE_RSA_WITH_AES_128_GCM_SHA256 - DHE_RSA_WITH_AES_128_CBC_SHA256 - DHE_RSA_WITH_AES_256_CBC_SHA - DHE_RSA_WITH_AES_128_CBC_SHA title: httpd name: httpd version: 1.0.0 summary: '' insecure_server_connections: false server_name_indication: true protocols: - tls_v1.2 - tls_v1.3Exemple :
TLS_PROFILE_URL=$(./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com tls-client-profiles:create -o lwgw-demo tlsclientprofile.yaml ---format json | jq -r '.url') - Ajoutez le profil client TLS au catalogue en utilisant le fichier configuredtlsclientprofile.yaml :
./apic -s <platform_endpoint_url> configured-tls-client-profiles:create -o <org_name> -c <catalog_name> --scope catalog configuredtlsclientprofile.yamlFichier de données : Générer un fichier YAML appelé configuredtlsclientprofile.yaml :
echo "{tls_client_profile_url: $TLS_PROFILE_URL}" > configuredtlsclientprofile.yamlExemple :
- Commande :
./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com configured-tls-client-profiles:create -o lwgw-demo -c previewcatalog --scope catalog configuredtlsclientprofile.yaml - Réponse :
httpd:1.0.0 https://platform-api.us-east-a.apiconnect.automation.ibm.com/api/catalogs/1273ce81-ef2c-4d01-96c4-5f33c1af119e/e80bfea1-bf1d-4af1-9d60-4fa1c16e836f/configured-tls-client-profiles/c1b1d8a8-9843-40a8-9f5e-a65f5ebcaf1e
- Commande :
Ajouter un produit au catalogue
La mise à disposition d'un produit déploie une copie de celui-ci dans le catalogue cible sans que le produit ne soit visible pour les développeurs.
Mettez en scène le produit en utilisant le fichier produit lwgw-product-demo.yaml et le fichier API demo , et enregistrez le fichier PRODUCT_URL dans une variable d'environnement :
PRODUCT_URL=$(./apic -s products:publish -c <catalog_name> -o <org_name> --stage <path_to_product_yaml> --format json | jq -r '.url')
demo.yaml avec le contenu suivant :openapi: 3.0.2
servers:
- url: "/demo"
info:
title: Demo
description: Demonstrate the capabilities of the lightweight gateway
version: 1.0.0
x-ibm-name: demo
x-ibm-summary: Demo API
x-ibm-configuration:
gateway: lightweight-gateway
compatibility:
suppress-limitation-errors: true
assembly:
catch: []
execute:
- parse:
documentType: json
input: request
- validate:
input: request
request:
schema:
validateSchema: true
- set:
variable:
name: arg
value: '$header("request", "x-arg")'
- invoke:
output: response
endpoint:
http:
target:
url: https://httpbin.org/anything
tlsClientProfile: httpd:1.0.0
timeout: 60
- parse:
documentType: json
input: response
- validate:
input: response
request:
schema:
validateSchema: true
- set:
messageHeader:
headerName: my-header-name
messageName: response
value: '123'
finally: []
tags:
- name: demo
description: good for demo purposes
paths:
"/test":
post:
responses:
default:
description: ensure response meets schema expectations
content:
application/json:
schema:
"$ref": "#/components/schemas/MyResponse"
requestBody:
description: Create a new pet in the store
required: true
content:
application/json:
schema:
"$ref": "#/components/schemas/Object"
components:
schemas:
Object:
type: object
MyResponse:
type: object
properties:
headers:
type: object
properties:
Format:
type: array
items:
type: string
enum:
- simple
- complex
json:
type: object
properties:
pet-name:
type: string
pet-type:
type: string
enum:
- dog
- bird
targetUrl utilisé précédemment dans l'exemple de code demo.yaml est toujours pris en charge dans le cadre de cet aperçu technologique, mais il ne le sera plus lors de la publication générale. L'exemple de code utilise maintenant le champ endpoint lwgw-product-demo.yaml avec le contenu suivant :info:
version: 1.0.0
title: lwgw-product-demo
name: lwgw-product-demo
gateways:
- lightweight-gateway
plans:
default-plan:
title: Default Plan
description: Default Plan
rateLimitMap:
plan-limit: default
components:
rateLimits:
default:
- max: 100
intervalLen: 1
intervalUnit: hour
apis:
demo:
$ref: demo.yaml
visibility:
view:
type: public
orgs: []
tags: []
enabled: true
subscribe:
type: authenticated
orgs: []
tags: []
enabled: true
product: 1.0.0
PRODUCT_URL=$(./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com products:publish -c previewcatalog -o lwgw-demo --stage lwgw-product-demo.yaml --format json | jq -r '.url')
Publier le produit
La publication d'un produit déploie une version statique du produit et de l'API dans le catalogue et la rend visible aux autres développeurs qui travaillent dans ce catalogue. Après avoir publié le produit, vous pouvez le retirer de la circulation, puis le réintroduire dans le catalogue pour l'utiliser dans la suite de ce tutoriel.
PRODUCT_URL que vous avez définie lors de l'étape de mise à disposition n'est pas utilisée lors de l'étape de publication. Vous utiliserez cette variable ultérieurement lorsque vous créerez un abonnement pour une application client.Publier le produit en utilisant le fichier updatestate.yaml :
./apic -s <platform_endpoint_url> products:update -c <catalog_name> -o <org_name> <product_name>:<product_version> --scope catalog updatestate.yaml
Fichier de données : Créez un fichier YAML appelé updatestate.yaml avec le contenu suivant :
state: published
Exemple :
./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com products:update -c previewcatalog -o lwgw-demo lwgw-product-demo:1.0.0 --scope catalog updatestate.yaml
Étapes facultatives pour prendre sa retraite et remettre en scène l'API :
- Retirez le produit en utilisant le fichier
retire.yaml:/apic -s <platform_endpoint_url> products:update -c <catalog_name> -o <org_name> <product_name>:<product_version> --scope catalog retire.yamlFichier de données : Créez un fichier YAML appelé
retire.yamlavec le contenu suivant :state: retiredExemple :
./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com products:update -c previewcatalog -o lwgw-demo lwgw-product-demo:1.0.0 --scope catalog retire.yaml - Mettez en scène le produit retiré en utilisant le fichier
staged.yaml:./apic -s <platform_endpoint_url> products:update -c <catalog_name> -o <org_name> <product_name>:<product_version> --scope catalog staged.yamlFichier de données : Créez un fichier YAML appelé
staged.yamlavec le contenu suivant :state: stagedExemple :
./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com products:update -c previewcatalog -o lwgw-demo lwgw-product-demo:1.0.0 --scope catalog staged.yaml
Création d'un utilisateur
Créer un utilisateur qui consomme le produit API. Lorsque vous créez une application client qui appelle l'API dans une étape ultérieure, elle nécessite une organisation de consommateurs avec au moins un utilisateur.
- Liste des registres d'utilisateurs disponibles pour votre organisme fournisseur :
./apic -s <platform_endpoint_url> user-registries:list -o <org_name>Exemple :
- Commande :
./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com user-registries:list -o lwgw-demo - Réponse :
previewcatalog-catalog https://platform-api.us-east-a.apiconnect.automation.ibm.com/api/user-registries/1273ce81-ef2c-4d01-96c4-5f33c1af119e/e24e1568-0f83-484d-8d1e-86376e1b26d2 sandbox-catalog https://platform-api.us-east-a.apiconnect.automation.ibm.com/api/user-registries/1273ce81-ef2c-4d01-96c4-5f33c1af119e/243d3bc3-9afd-4d31-b698-893fe3aa0b5f ibm-verify-test https://platform-api.us-east-a.apiconnect.automation.ibm.com/api/user-registries/1273ce81-ef2c-4d01-96c4-5f33c1af119e/ab3e089f-20f9-4b85-b74a-448eb5ae284c
- Commande :
- Ajoutez un utilisateur au registre
previewcatalog-catalogen utilisant le fichieruser.yamlet enregistrez le fichierOWNER_URLdans une variable d'environnement :OWNER_URL=$(./apic -s <platform_endpoint_url> users:create -o <org_name> --user-registry <user_registry_name> user.yaml --format json | jq '.url')Fichier de données : Créez un fichier YAML appelé
user.yamlavec le contenu suivant :username: johnpreview email: john.preview@us.ibm.com first_name: John last_name: Preview password: usermustchangePassw0rd!Exemple :
OWNER_URL=$(./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com users:create -o lwgw-demo --user-registry previewcatalog-catalog user.yaml --format json | jq '.url') - Répertoriez les utilisateurs dans le registre pour vérifier que votre nouvel utilisateur a bien été ajouté :
./apic -s <platform_endpoint_url> users:list -o <org_name> --user-registry <user_registry_name>Exemple :
./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com users:list -o lwgw-demo --user-registry previewcatalog-catalogNotez l'adresse URL de votre nouvel utilisateur ; vous en aurez besoin lorsque vous ajouterez une organisation de consommateurs à l'étape suivante.
Créer une organisation de consommateurs avec le nouvel utilisateur
L'organisation de consommateurs contient la liste des développeurs d'applications qui peuvent utiliser vos API. Lorsque vous créez une organisation de consommateurs, vous ajoutez un registre d'utilisateurs et les personnes figurant dans ce registre deviennent membres de la nouvelle organisation de consommateurs.
Utilisez le fichier de données fourni pour créer une organisation de consommateurs en utilisant le registre previewcatalog-catalog , qui inclut votre nouvel utilisateur John Preview.
Fichier de données : Générer un fichier YAML appelé previewCorg.yaml :
echo "{name: previewCorg, owner_url: $OWNER_URL, title:previewCorg}" > previewCorg.yaml
Créez une organisation de consommateurs en utilisant le fichier previewCorg.yaml :
./apic -s <platform_endpoint_url> consumer-orgs:create -o <org_name> -c <catalog_name> previewCorg.yaml
Exemple :
./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com consumer-orgs:create -o lwgw-demo -c previewcatalog previewCorg.yaml
Créer une application client et l'abonner à l'API
Créez une application et abonnez-la à une API. Les informations d'identification de l'application sont vérifiées lorsque vous appelez l'API. Complétez l'étape précédente pour créer l'organisation de consommateurs avant de pouvoir créer une application.
Pour ce tutoriel, vous n'aurez pas besoin de mettre en place un portail pour développeurs et de créer une application complète pour appeler l'API. Au lieu de cela, vous pouvez créer une application client simple et appeler l'API directement à partir du catalogue.
- Créez une application client en utilisant le fichier
app.yaml:./apic -s <platform_endpoint_url> apps:create -o <org_name> -c <catalog_name> --consumer-org <consumer_org_name> app.yamlFichier de données : Créez un fichier YAML appelé
app.yamlavec le contenu suivant :name: apppreviewExemple :
./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com apps:create -o lwgw-demo -c previewcatalog --consumer-org previewCorg app.yaml - Créez un abonnement en utilisant le fichier
subscription.yaml(vous devez créer l'application avant de pouvoir créer un abonnement) :./apic -s <platform_endpoint_url> subscriptions:create -o <org_name> -c <catalog_name> --consumer-org <consumer_org_name> --app <app_name>Générer le fichier de données :subscription.yamlNote : Cette commande identifie le produit échelonné auquel l'application client est abonnée.echo "{product_url: $PRODUCT_URL, plan: default-plan}" > subscription.yamlExemple :
./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com subscriptions:create -o lwgw-demo -c previewcatalog --consumer-org previewCorg --app apppreview subscription.yaml
Vérifiez que vos commandes ont fonctionné
Vérifiez les résultats de vos commandes sur la passerelle. Cela vous indique si toutes les commandes ont été appliquées ou si certaines sont encore en attente.
./apic -s <platform_endpoint_url> configured-gateway-services:get -o <org_name> -c <catlog_name> --scope catalog --fields "add(gateway_processing_status,events)" <gateway_name>
Exemple :
./apic -s platform-api.us-east-a.apiconnect.automation.ibm.com configured-gateway-services:get -o lwgw-demo -c previewcatalog --scope catalog --fields "add(gateway_processing_status,events)" lightweight-gateway
Tester l'API avec le Lightweight Gateway
Utilisez curl pour effectuer quelques appels API rapides et voir comment se comporte Lightweight Gateway.
endpoint doit inclure le nom de votre catalogue, le nom du produit et le nom de l'organisme fournisseur dans le format suivant : http://{product}-{catalog}-{org}.{gateway_name}.rosa.apic-v-lw01.lugt.p3.openshiftapps.com/{version}/{server_url}/{path}- Mauvaise demande - La demande n'est pas analysée
curl -v --header "Content-Type: application/json" --request POST --data '["foo", "bar"' http://lwgw-product-demo-previewcatalog-lwgw-demo.apic-gwlw-038.apps.apic-s-u01.nnna.p1.openshiftapps.com/1.0.0/demo/testCette demande est une mauvaise demande car la terminaison
]est absente du tableau et la demande ne peut pas être analysée. - Mauvaise demande - La demande n'est pas validée
curl -v --header "Content-Type: application/json" --request POST --data '["foo", "bar"]' http://lwgw-product-demo-previewcatalog-lwgw-demo.apic-gwlw-038.apps.apic-s-u01.nnna.p1.openshiftapps.com/1.0.0/demo/testIl s'agit d'une mauvaise requête car, bien que le tableau soit formaté correctement, le schéma de la requête stipule que les données affichées doivent être un objet JSON (et non un tableau).
- Réponse valide
curl -v --header "Content-Type: application/json" --header "Format: simple" --request POST --data '{}' http://lwgw-product-demo-previewcatalog-lwgw-demo.apic-gwlw-038.apps.apic-s-u01.nnna.p1.openshiftapps.com/1.0.0/demo/testIl s'agit d'une réponse valide car l'en-tête Format est renvoyé sous la forme de la chaîne
simplepar httpbin.org, ce qui est conforme à l'exigence du schéma de réponse selon laquelle /headers/Format doit respecter les contraintes Enum desimpleoucomplex.