Bij bijna alle WSO producten zitten een aantal samples. De WSO API Manager vormt daar geen uitzondering op. Maar toch werkt het anders dan de Enterprise Integrator en de WSO2 Identity Server die we in eerdere blogs behandelden. Als je een kant-en-klare versie van de WSO2 API Manager downloadt en op je lokale machine installeert of op een server runt, kun je een sample API (war-bestand) gebruiken voor deployment. Dat is uiteraard geen complete API met alles erop en eraan, maar eigenlijk een API met een sterk beperkte functionaliteit. Hoe dan ook krijg je zo wel de mogelijkheid om het product uit te proberen, zonder dat je een API back-end hoeft te vinden om te kunnen gebruiken en alles wat daarbij komt kijken.
In deze blog bespreek ik een aantal andere API’s die in de API Manager beschikbaar zijn en bekijken we enkele van de samples waarvan we weten dat ze bestaan.
API’s
Laten we beginnen met de API’s die er al zijn. Strikt genomen zijn ze in de huidige vorm geen echte API’s, omdat het war-bestanden zijn die in de embedded Tomcat van de API Manager aangeboden worden.
Voor wie bekend is met oudere versies, kunnen deze war-bestanden er bekend uitzien, omdat we door de jaren al aardig wat verschillende sample API’s langs hebben zien komen. Maar hoe weet je nu waar je heen moet en hoe je ze kunt configureren? Dat is inderdaad een puzzel, maar gelukkig kan ik je daarbij helpen.
Door verschillende online bronnen te combineren kon ik ergens in een WSO2 API store op het internet een deployed Calculator API vinden. Ik heb er de Swagger 2.0 (of OpenAPI 2.0) definitie van gedownload. Dat was dan de API-definitie, maar die werkte op een oudere versie van de WSO2 API Manager (2.6.0).
Dus heb ik een API in mijn API Manager 3.2.0 aangemaakt en de Swagger definitie in de WSO2 API Manager geïmporteerd. Dat gaf me de juiste bronnen en toen hoefde ik alleen nog uit te vinden wat de URL was. Dat ging gemakkelijk, omdat ik dat op de console kon zien.
[2021-07-02 09:30:30,087] INFO - TomcatGenericWebappsDeployer Deployed webapp: StandardEngine[Catalina].StandardHost[localhost].StandardContext[/am/sample/calculator/v1].File[C:\Users\rob\Desktop\SAMLES~1\WSO2AM~1.0\bin\..\repository\deployment\server\webapps\am#sample#calculator#v1.war]
Dit is het Swagger bestand, voor als je de API in jouw WSO2 API Manager wilt maken.
swagger: '2.0'
info:
description: >-
Simple calculator API to perform addition, subtraction, multiplication and
division.
version: '1.0'
title: Calculator
host: localhost
basePath: /calc/1.0
schemes:
- https
- http
security:
- default: []
paths:
/add:
get:
summary: add x and y
parameters:
- name: x
in: query
required: true
type: string
- name: 'y'
in: query
required: true
type: string
responses:
'200': {}
security:
- default: []
x-auth-type: Application & Application User
x-throttling-tier: Unlimited
x-wso2-application-security:
security-types:
- oauth2
optional: false
/subtract:
get:
summary: subtract y from x
parameters:
- name: x
in: query
required: true
type: string
- name: 'y'
in: query
required: true
type: string
responses:
'200': {}
security:
- default: []
x-auth-type: Application & Application User
x-throttling-tier: Unlimited
x-wso2-application-security:
security-types:
- oauth2
optional: false
/multiply:
get:
summary: multiply x by y
parameters:
- name: x
in: query
required: true
type: string
- name: 'y'
in: query
required: true
type: string
responses:
'200': {}
security:
- default: []
x-auth-type: Application & Application User
x-throttling-tier: Unlimited
x-wso2-application-security:
security-types:
- oauth2
optional: false
/divide:
get:
summary: divide x by y
parameters:
- name: x
in: query
required: true
type: string
- name: 'y'
in: query
required: true
type: string
responses:
'200': {}
security:
- default: []
x-auth-type: Application & Application User
x-throttling-tier: Unlimited
x-wso2-application-security:
security-types:
- oauth2
optional: false
securityDefinitions:
default:
type: oauth2
authorizationUrl: 'https://test.com'
flow: implicit
x-wso2-auth-header: Authorization
x-wso2-cors:
corsConfigurationEnabled: false
accessControlAllowOrigins:
- '*'
accessControlAllowCredentials: false
accessControlAllowHeaders:
- authorization
- Access-Control-Allow-Origin
- Content-Type
- SOAPAction
- apikey
- testKey
accessControlAllowMethods:
- GET
- PUT
- POST
- DELETE
- PATCH
- OPTIONS
x-wso2-production-endpoints:
urls:
- 'https://localhost:9443/am/sample/calculator/v1/api/'
type: http
x-wso2-sandbox-endpoints:
urls:
- 'https://localhost:9443/am/sample/calculator/v1/api/'
type: http
x-wso2-basePath: /calc/1.0
x-wso2-transports:
- http
- https
x-wso2-application-security:
security-types:
- oauth2
optional: false
x-wso2-response-cache:
enabled: false
cacheTimeoutInSeconds: 300
Andere samples
De tweede soort resources zijn logischerwijs de API samples die we op GitHub kunnen vinden. Zoals je weet zijn er GitHub repository’s voor de WSO2 producten, zoals de API Manager, de Enterprise Integrator en de Identity Server, maar ook de samples worden er opgeslagen.
Helaas zijn niet alle samples up-to-date. Als je de bijbehorende documentatie bekijkt, dan zul je merken dat er referenties gemaakt worden naar eerdere versies van de API manager, o.a. de WSO2 API Manager 2.6.0 die al een paar jaar oud is. Dat betekent niet direct dat deze samples niet werken op version 3.2.0 (de versie die ik nu gebruik). Maar het is altijd goed om te checken of er een nieuwere versie van een bepaalde sample beschikbaar is, omdat het gebruik ervan in een nieuwere versie mogelijk afwijkend is.
Ik download het zip-bestand (je kunt natuurlijk ook Git gebruiken). De samples zijn voor een deel Java programma’s die gecompileerd moeten worden. Maar er zijn ook Docker compose bestanden, Micro Integrator bestanden met Kubernetes en streaming API back-ends. Voor de compilatie, eigenlijk het opbouwen, zijn Maven en Java benodigd.
Dit zijn de sample mappen. Ik negeer de bestanden die geen mappen zijn.
Sample | Explanation | Install / Java mvn build |
apim-tutorial | API Manager 4.0.0 tutorial series, docker compose setup | Install |
CustomGatewayJWTGenerator | API Gateway CustomJWT API Manager 3.1.0 | Build |
CustomJWTGenerator | CustomJWTGenerator for API Manager 2.6.0 / 3.0.0 | Build |
CustomJWTTransformer | Secure APIs using JWT (Self Contained) Access Tokens for API Manager 3.1.0 | Build |
graphql-backend | Simple Graphql Server | Install |
kubernetes-demo | Kubernetes demo | Install |
mi-cicd | Micro Integrator CICD Docker & Kubernetes | Install |
streaming-api-backends | Websocket backend and SSE backend | Build / Install |
XACML-handler | XACML Entitlement handler | Build |
Conclusie
Zoals je kunt zien is er een aardig aanbod aan samples voor de verschillende versies van de API Manager versies, lopend van 2.6.0 tot 4.0.0.
Ik moet zeggen dat ik de meeste ervan nog niet bekeken heb (en dan voornamelijk de Docker en Kubernetes demo’s). Maar, ik ga er zeker nog eens goed naar kijken en als ik een waardevolle sample vind, schrijf ik er een blog over.
De Calculator API, waar ik nu het Swagger bestand voor heb, kan gebruikt worden als een extra eenvoudige sample API op de API Manager en is heel bruikbaar voor voorbeelden en demo’s.
Leer het maximale uit de WSO2 API Manager te halen
Ik hoop dat deze blog je wat gebracht heeft. Als je geïnteresseerd bent om meer te leren over hoe je de WSO2 API Manager gebruikt, neem dan eens een kijkje naar de WSO2 trainingen die we aanbieden. Vanaf oktober 2021 starten we in Nederland en in de VS weer met live trainingen onder leiding van gekwalificeerde instructeurs. Daarnaast bieden we rond die tijd ook weer in-house trainingen aan bij jullie op kantoor of op een trainingslocatie voor groepen cursisten vanuit één organisatie.