A simple Koajs 2.15.2 Application REST Skeleton This version based on koa 2.15.2.
Checkout node-koajs-rest-skeleton:
$ git clone https://github.com/ria-com/node-koajs-rest-skeleton
Make your own new project:
$ mv node-koajs-rest-skeleton my_new_project $ cd my_new_project $ rm -rf .git
Edit package.json:
Edit config/ files:*
Install modules
Start app:
Make your own Spec-files for testing and start test
In this skeleton for automatic testing was used jasmine-nodie & Frisby (REST API testing framework). I wrote several tests that you can use as examples.
All tests should be placed in the ./spec folder. The name of each test file must end with *Spec.js
To run the tests, use
$ cd my_new_project $ npm test
Manual testing your REST service:
You can also manual check the serviceability of your service with bash and curl
$ curl -XGET "http://localhost:8081/users/1"
$ curl -XGET "http://localhost:8081/users"
$ curl -XPOST "http://localhost:8081/users" -d '{"name":"New record 1"}' -H 'Content-Type: application/json'
$ curl -XPUT "http://localhost:8081/users/3" -d '{"name":"New record 3"}' -H 'Content-Type: application/json'
$ curl -XDELETE "http://localhost:8081/users/3"
Usage: /usr/bin/node ./console.js --section [string] [--action [string]] [--opt [object]] Options: --opt, --options example --opt.app=mobile --opt.s=1 [default: {}] --section [required] --action [default: "index"]
For example
$ ./console.js --section=default --opt.hello=world Hello world defaultController & index action with options: {"hello":"world"}
Usage: NODE_WORKER_NAME=[worker_name] NODE_QUEUE_NAME=[queue_name] /usr/bin/node --harmony ./worker.js
For example
$ NODE_WORKER_NAME=example NODE_QUEUE_NAME=example /usr/bin/node --harmony ./worker.js
Several new features have been added that can be used in conjunction with kubernetes
Auto shutdown. Set the environment variable NODE_LIFE_TIME to specify the time at which the service will suspend its work, for exsmple: NODE_LIFE_TIME=24h или NODE_LIFE_TIME=30m
If the variable is not set, then "Auto shutdown" is disabled
Redy state. Your app can tell the kubernetes system that it is temporarily not ready to accept new requests. How to do this is described in the example below
const {setReady} = require('../controllers/kubernetesController'); // ... // setReady(false) // to temporary disable new requests // ... // setReady(true) // to restore accept new requests
This should be configured in the config of kubernetes pod, the address on which poll is created: /redyz
Health state. Your app can tell the kubernetes system that it is temporarry broken. How to do this is described in the example below
const {setHealth} = require('../controllers/kubernetesController'); // ... // setHealth(false) // to tell kubernetes: "app is broken" // ... // setHealth(true) // to tell kubernetes: "app is live"
This should be configured in the config of kubernetes pod, the address on which poll is created: /healthz
In order to avoid cluttering the minimal code of our REST-service, additional functionality will be available when running the app via index.kubernetes.js:
$ node ./index.kubernetes.js
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4