mirror of
https://github.com/jlengrand/sample-node-api.git
synced 2026-03-10 08:41:23 +00:00
19
README.md
19
README.md
@@ -2,12 +2,7 @@
|
||||
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.
|
||||
|
||||
## Steps
|
||||
|
||||
**Note**
|
||||
`Only 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.
|
||||
|
||||
|
||||
## PART I: Download & Build on local
|
||||
|
||||
### 1) Clone the repository, install node packages and verify routes locally
|
||||
@@ -17,23 +12,21 @@ This sample express app, has https enabled already.
|
||||
git clone https://github.com/zowe/sample-node-api
|
||||
cd sample-node-api
|
||||
npm install
|
||||
npm start
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Open your local browser and try accessing
|
||||
`https://localhost:4000/accounts/`
|
||||
`https://localhost:4000/accounts/1`
|
||||
`https://localhost:4000/accounts/1/cars/`
|
||||
`http://localhost:18000/accounts/`
|
||||
`http://localhost:18000/accounts/1`
|
||||
`http://localhost:18000/accounts/1/cars/`
|
||||
|
||||
|
||||
### 2) Transfer project files from local to remote host
|
||||
|
||||
**Note**
|
||||
Don't transfer `node_modules` folder, we can do install npm install later on remote server itself to pull down required node packages
|
||||
|
||||
```
|
||||
cd sample-node-api
|
||||
npm run build
|
||||
npm run dist
|
||||
scp -r dist ibmuser@my.mainframe.com:</usr/lpp/extender>/sample-node-api
|
||||
```
|
||||
|
||||
|
||||
276
package-lock.json
generated
276
package-lock.json
generated
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "sample-api",
|
||||
"name": "sample-node-api",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
@@ -107,6 +107,15 @@
|
||||
"resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-release/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
|
||||
},
|
||||
"async": {
|
||||
"version": "2.6.3",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
|
||||
"integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash": "^4.17.14"
|
||||
}
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-release/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
@@ -429,6 +438,191 @@
|
||||
"resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-release/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
|
||||
},
|
||||
"copy-node-modules": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/copy-node-modules/-/copy-node-modules-1.1.1.tgz",
|
||||
"integrity": "sha512-yHW0GIH6s515MTxnwsDW/ajL9EXGYNEztQFZ124PEMMNY4SFpS7/gVCQM7zgW2Tk+5k4mGU+nzx7gY4zXi/40A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"async": "^2.6.1",
|
||||
"graceful-fs": "^4.1.15",
|
||||
"jsonfile": "^5.0.0",
|
||||
"lodash.flatten": "^4.4.0",
|
||||
"lodash.uniqwith": "^4.5.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"ncp": "^2.0.0",
|
||||
"semver": "^5.6.0",
|
||||
"yargs": "^12.0.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"camelcase": {
|
||||
"version": "5.3.1",
|
||||
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
|
||||
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
|
||||
"dev": true
|
||||
},
|
||||
"cliui": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
|
||||
"integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"string-width": "^2.1.1",
|
||||
"strip-ansi": "^4.0.0",
|
||||
"wrap-ansi": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"execa": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
|
||||
"integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cross-spawn": "^6.0.0",
|
||||
"get-stream": "^4.0.0",
|
||||
"is-stream": "^1.1.0",
|
||||
"npm-run-path": "^2.0.0",
|
||||
"p-finally": "^1.0.0",
|
||||
"signal-exit": "^3.0.0",
|
||||
"strip-eof": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"find-up": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
|
||||
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"locate-path": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"get-stream": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
|
||||
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pump": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"invert-kv": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
|
||||
"integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
|
||||
"dev": true
|
||||
},
|
||||
"lcid": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
|
||||
"integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"invert-kv": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"locate-path": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
|
||||
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-locate": "^3.0.0",
|
||||
"path-exists": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"mem": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
|
||||
"integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"map-age-cleaner": "^0.1.1",
|
||||
"mimic-fn": "^2.0.0",
|
||||
"p-is-promise": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"mimic-fn": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
||||
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
||||
"dev": true
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.5",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
||||
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"os-locale": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
|
||||
"integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"execa": "^1.0.0",
|
||||
"lcid": "^2.0.0",
|
||||
"mem": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
|
||||
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-try": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"p-locate": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
|
||||
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-limit": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"p-try": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
|
||||
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
|
||||
"dev": true
|
||||
},
|
||||
"yargs": {
|
||||
"version": "12.0.5",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
|
||||
"integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cliui": "^4.0.0",
|
||||
"decamelize": "^1.2.0",
|
||||
"find-up": "^3.0.0",
|
||||
"get-caller-file": "^1.0.1",
|
||||
"os-locale": "^3.0.0",
|
||||
"require-directory": "^2.1.1",
|
||||
"require-main-filename": "^1.0.1",
|
||||
"set-blocking": "^2.0.0",
|
||||
"string-width": "^2.0.0",
|
||||
"which-module": "^2.0.0",
|
||||
"y18n": "^3.2.1 || ^4.0.0",
|
||||
"yargs-parser": "^11.1.1"
|
||||
}
|
||||
},
|
||||
"yargs-parser": {
|
||||
"version": "11.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
|
||||
"integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"camelcase": "^5.0.0",
|
||||
"decamelize": "^1.2.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cors": {
|
||||
"version": "2.8.5",
|
||||
"resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-release/cors/-/cors-2.8.5.tgz",
|
||||
@@ -438,6 +632,19 @@
|
||||
"vary": "^1"
|
||||
}
|
||||
},
|
||||
"cross-spawn": {
|
||||
"version": "6.0.5",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
|
||||
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"nice-try": "^1.0.4",
|
||||
"path-key": "^2.0.1",
|
||||
"semver": "^5.5.0",
|
||||
"shebang-command": "^1.2.0",
|
||||
"which": "^1.2.9"
|
||||
}
|
||||
},
|
||||
"crypto-random-string": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
|
||||
@@ -951,6 +1158,16 @@
|
||||
"integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
|
||||
"dev": true
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-5.0.0.tgz",
|
||||
"integrity": "sha512-NQRZ5CRo74MhMMC3/3r5g2k4fjodJ/wh8MxjFbCViWKFjxrnudWSY5vomh+23ZaXzAS7J3fBZIR2dV6WbmfM0w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6",
|
||||
"universalify": "^0.1.2"
|
||||
}
|
||||
},
|
||||
"keyv": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
|
||||
@@ -997,6 +1214,24 @@
|
||||
"path-exists": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.19",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
|
||||
"integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.flatten": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
|
||||
"integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.uniqwith": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz",
|
||||
"integrity": "sha1-egy/ZfQ7WShiWp1NDcVLGMrcfvM=",
|
||||
"dev": true
|
||||
},
|
||||
"lowercase-keys": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
|
||||
@@ -1029,6 +1264,15 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"map-age-cleaner": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
|
||||
"integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-defer": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"media-typer": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-release/media-typer/-/media-typer-0.3.0.tgz",
|
||||
@@ -1107,11 +1351,23 @@
|
||||
"resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-release/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
},
|
||||
"ncp": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
|
||||
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
|
||||
"dev": true
|
||||
},
|
||||
"negotiator": {
|
||||
"version": "0.6.2",
|
||||
"resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-release/negotiator/-/negotiator-0.6.2.tgz",
|
||||
"integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs="
|
||||
},
|
||||
"nice-try": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
|
||||
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-release/node-fetch/-/node-fetch-2.6.0.tgz",
|
||||
@@ -1236,11 +1492,23 @@
|
||||
"integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
|
||||
"dev": true
|
||||
},
|
||||
"p-defer": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
|
||||
"integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
|
||||
"dev": true
|
||||
},
|
||||
"p-finally": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-release/p-finally/-/p-finally-1.0.0.tgz",
|
||||
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
|
||||
},
|
||||
"p-is-promise": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
|
||||
"integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
|
||||
"dev": true
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-release/p-limit/-/p-limit-1.3.0.tgz",
|
||||
@@ -1763,6 +2031,12 @@
|
||||
"crypto-random-string": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"universalify": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
|
||||
"dev": true
|
||||
},
|
||||
"unpipe": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-release/unpipe/-/unpipe-1.0.0.tgz",
|
||||
|
||||
@@ -6,8 +6,10 @@
|
||||
"scripts": {
|
||||
"dev": "nodemon src/index.js",
|
||||
"start": "node src/index.js",
|
||||
"build": "npm run clean && cp -r server dist/server && cp -r bin dist/bin && cp *.yml dist && cp *.json dist && cp *.js dist && rimraf dist/package-lock.json",
|
||||
"clean": "rimraf dist && mkdirp dist"
|
||||
"build": "npm run clean && cp -r src dist/src && cp *.yml dist && cp *.json dist",
|
||||
"dist": "npm run build && npm run pack",
|
||||
"clean": "rimraf dist && mkdirp dist",
|
||||
"pack": "copy-node-modules . dist"
|
||||
},
|
||||
"author": "",
|
||||
"license": "EPL-2.0",
|
||||
@@ -18,9 +20,10 @@
|
||||
"yargs": "^8.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"nodemon": "^2.0.4",
|
||||
"copy-node-modules": "^1.1.1",
|
||||
"mkdirp": "^1.0.3",
|
||||
"node-fetch": "^2.3.0",
|
||||
"nodemon": "^2.0.4",
|
||||
"rimraf": "^3.0.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,8 @@ services:
|
||||
description: Sample Node API
|
||||
catalogUiTileId: sample-node-api
|
||||
instanceBaseUrls:
|
||||
- http://mymainframe.ibm.com:18000/
|
||||
- http://localhost:18000/
|
||||
- http://localhost:19000/
|
||||
homePageRelativeUrl: # Home page is at the same URL
|
||||
routedServices:
|
||||
- gatewayUrl: api/v1 # [api/ui/ws]/v{majorVersion}
|
||||
@@ -14,8 +15,8 @@ services:
|
||||
- apiId: com.ibm.sample-node-api
|
||||
gatewayUrl: api/v1
|
||||
version: 1.0.0
|
||||
swaggerUrl: http://mymainframe.ibm.com:18000/api-docs
|
||||
documentationUrl: http://mymainframe.ibm.com:18000/api-docs-ui
|
||||
swaggerUrl: http://localhost:18000/api-docs
|
||||
documentationUrl: http://localhost:18000/api-docs-ui
|
||||
|
||||
catalogUiTiles:
|
||||
sample-node-api:
|
||||
|
||||
BIN
screenshots/API_Mediation.png
Normal file
BIN
screenshots/API_Mediation.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 43 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 107 KiB |
BIN
screenshots/JES_ZOWE_JOBS.PNG
Normal file
BIN
screenshots/JES_ZOWE_JOBS.PNG
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
BIN
screenshots/Zowe_Services_Ports.png
Normal file
BIN
screenshots/Zowe_Services_Ports.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 156 KiB |
@@ -70,7 +70,7 @@ function setUpParams() {
|
||||
.option('p', {
|
||||
alias: 'port',
|
||||
description: 'listening port',
|
||||
default: 8080
|
||||
default: 18000
|
||||
})
|
||||
.option('k', {
|
||||
alias: 'key',
|
||||
|
||||
@@ -19,7 +19,7 @@ router.use('/cars', cars);
|
||||
router.use('/accounts', accounts);
|
||||
router.use('/', swagger);
|
||||
|
||||
router.get('/', (req, res) => res.send('Hello World!'));
|
||||
router.get('/', (req, res) => res.send('Sample Node API'));
|
||||
router.get('/health', (req, res) => {
|
||||
const healthcheck = {
|
||||
uptime: process.uptime(),
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
,"info":{"description":"Sample Node API"
|
||||
,"version":"1.0"
|
||||
,"title":"Sample Node API"}
|
||||
,"host":"localhost:8080"
|
||||
,"host":"localhost:18000"
|
||||
,"basePath":"/"
|
||||
,"tags":[{"name":"Accounts","description":"Accounts API"},{"name":"Cars","description":"Cars API"}]
|
||||
,"schemes":["http"]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
## start locally
|
||||
node server/app.js --service sample-node-api --port 8080 --key sslcert/server.key --cert sslcert/server.cert -v
|
||||
node server/app.js --service sample-node-api --port 18000 --key sslcert/server.key --cert sslcert/server.cert -v
|
||||
|
||||
cd ~/zowe/extenders/sample-node-api
|
||||
## start on z/os uss
|
||||
|
||||
65
troubleshooting.md
Normal file
65
troubleshooting.md
Normal file
@@ -0,0 +1,65 @@
|
||||
|
||||
# How do we know zowe retarted succesfully?
|
||||
|
||||
1 : check in browser
|
||||

|
||||
https://s0w1:7554
|
||||
https://s0w1:7554/ui/v1/apicatalog/ - try login and check
|
||||
|
||||
2: Check if all services are up or not
|
||||
Zowe listen on 10 ports
|
||||
- 8542, 8544, 8546, 8548, 8550 - these five start much earlier
|
||||
- 8545, 8547, 7552, 7553, 7554 - these five are java services - takes over 20 mins to restart
|
||||
Login to zowe and check all open ports:
|
||||
```
|
||||
ssh s0w1
|
||||
onetstat -a | grep Listen
|
||||
```
|
||||
|
||||
you will see 10 open ports
|
||||

|
||||
|
||||
3. Eureka Discovery Service Dashboard has 11 running services
|
||||

|
||||
|
||||
4. Open Jes Explorer
|
||||
filter on owner - ZWE*
|
||||
```
|
||||
#1 zss service started
|
||||
ZWES1013I ZSS Server has started. Version '1.13.0+20200623'
|
||||
|
||||
#2 - JES Explorer UI
|
||||
[JES] is started and listening on 8546...
|
||||
|
||||
#3 USS Explorer UI
|
||||
[USS] is started and listening on 8550...
|
||||
|
||||
#4 MVS Explorer UI
|
||||
[MVS] is started and listening on 8548...
|
||||
|
||||
#5 ZLUX
|
||||
2020-08-10 06:26:49.307 <ZWED:66510> ZWESVUSR INFO (_zsf.install,index.js:340) ZWED0031I - Server is ready at https://0.0.0.0:8544, Plugins successfully loaded: 100% (20/20)
|
||||
|
||||
# 6 JobsAPI service is up
|
||||
2020-08-10 06:40:53.432 <ZWEEAJ1:main:66500> ZWESVUSR INFO (o.z.j.JesJobsApplication,StartupInfoLogger.java:59) Started JesJobsApplication in 872.68 seconds (JVM running for 1056.269)
|
||||
|
||||
#7 Datasets and Files API service is up
|
||||
2020-08-10 06:41:13.974 <ZWEEAD1:main:66496> ZWESVUSR INFO (o.z.DataSetsAndUnixFilesApplication,StartupInfoLogger.java:59) Started DataSetsAndUnixFilesApplication in 906.562 seconds (JVM running for 1073.875)
|
||||
|
||||
#8 Discovery Service is up
|
||||
|
||||
2020-08-10 06:44:33.386 <ZWEADS1:main:66493> ZWESVUSR INFO (o.z.a.p.s.ServiceStartupEventHandler) ZWEAM000I Discovery Service has been started in 1275.604 seconds
|
||||
|
||||
#9 Catalog service is up
|
||||
|
||||
2020-08-10 06:45:34.765 <ZWEAAC1:main:66497> ZWESVUSR INFO (o.z.a.p.s.ServiceStartupEventHandler) ZWEAM000I API Catalog Service has been started in 1336.094 seconds
|
||||
|
||||
#10 Gateway service is up
|
||||
|
||||
2020-08-10 06:45:43.711 <ZWEAGW1:main:66498> ZWESVUSR INFO (o.z.a.p.s.ServiceStartupEventHandler) ZWEAM000I Gateway Service has been started in 1344.318 seconds
|
||||
|
||||
# 11 zlux eureka registeration with API ML
|
||||
|
||||
2020-08-10 06:57:29.815 <ZWED:66510> ZWESVUSR INFO (_zsf.apiml,apiml.js:218) ZWED0021I - Eureka Client Registered from 127.0.0.1. Available at https://S0W1.CANLAB.IBM.COM:7553/ui/v1/zlux/
|
||||
ZWED5019I - Started
|
||||
```
|
||||
Reference in New Issue
Block a user