A sample node js api for finding cars and accounts for a dealership,its used here to demonstrate the steps to extend API/ML with your own rest api.
NoteOnly rest api with https support can be deployed behind API/ML, make sure to enable https support in your rest api.
This sample express app, has https enabled already.
//on local git clone https://github.com/zowe/sample-node-api cd sample-node-api npm install npm start
Open your local browser and verify the sample-node-api is working by accessing:http://localhost:18000/accounts/
http://localhost:18000/accounts/1
http://localhost:18000/accounts/1/cars/
Note
The node_modules
folder will not be transferred, we can do npm install later on remote server itself to pull down required node packages
cd sample-node-api npm run build scp -r dist [email protected]:</usr/lpp/extender>/sample-node-api
For the next step, ensure that you have node installed on z/OS and your PATH includes nodejs/bin directory.
ssh [email protected] . ~/.profile - (Skip if you can already run "npm" on z/OS) cd </usr/lpp/extender>/sample-node-api npm install
Get latest package from artifactory
Choose the latest pax build provided from the link above and download it into your local storage.
sftp [email protected] put <pax-name>.pax
ssh [email protected]
./<zowe-runtime-dir>/bin/zowe-install-component.sh -d <zowe-extensions-dir> -i <zowe-instance-dir> -o <component-file-path> -l <log-folder>
<zowe-extensions-dir> - Directory that will hold all external extensions installed onto zowe <zowe-instance-dir> - Current installed Zowe's instance directory <component-file-path> - The path to the component being installed (the component file transferred from local to z/OS in PART I) <log-file> - Directory that will hold the logs of the component installation
We expect following in service folder start.sh
. In our case its bin folder with relevant scripts.
start.sh
starts node app on configured portenv.sh
its custom script use to configure port for our node app, feel free to use your desired way
Please see static definition file sample-node-api.yml
It configures service endpoint as sample-node-api
with property serviceId
We also provide api gateway base path apiv1
with property gatewayUrl
in same file.
In effect, service can be accessed with following url:https://{host}:{GATEWAY_PORT}/{gatewayUrl}/{serviceId}/*
where GATEWAY_PORT
is configured in $INSTANCE_DIR/instance.env
Verify by accessing following:https://my.mainframe.com:7554/api/v1/sample-node-api/accounts/
https://my.mainframe.com:7554/api/v1/sample-node-api/accounts/1/
https://my.mainframe.com:7554/api/v1/sample-node-api/accounts/1/cars/
API Catalog
Discovery Service Dashboard