node-koajs-rest-skeleton

A simple Koajs 2 Application REST Skeleton

  • Owner: ria-com/node-koajs-rest-skeleton
  • Platform:
  • License:: GNU General Public License v3.0
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

node-koajs-rest-skeleton v3.5.3

A simple Koajs 2.7.0 Application REST Skeleton
This version based on koa 2.7.0.

quick start

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:

$ vi package.json

Edit config/ files:*

$ vi config/default.js

Install modules

$ npm install

Start app:

$ node ./index.js

testing

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

get user id 1
$ curl -XGET "http://localhost:8081/users/1"
get all users
$ curl -XGET "http://localhost:8081/users"
add new user
$ curl -XPOST "http://localhost:8081/users" -d '{"name":"New record 1"}' -H 'Content-Type: application/json'
edit user id 3
$ curl -XPUT "http://localhost:8081/users/3" -d '{"name":"New record 3"}' -H 'Content-Type: application/json'
delete user id 3
$ curl -XDELETE "http://localhost:8081/users/3"

console api

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"}

rabbitmq api

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

kubernetes api

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

history

  • v3.5 - Joi validator was added to check PUT & POST input data (thanks to Roman Yakovenko)
  • v3.4 - Fix Dockerfile add /version route to kubernetes version
  • v3.3 - Some kubernetes features added
  • v3.2 - Updated dependencies for Koa 2.5, fix api tests, remove .babelrc

Main metrics

Overview
Name With Ownerria-com/node-koajs-rest-skeleton
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 3)
Platform
License:GNU General Public License v3.0
所有者活动
Created At2014-09-04 12:12:03
Pushed At2024-04-05 09:46:37
Last Commit At2024-04-05 12:46:26
Release Count0
用户参与
Stargazers Count75
Watchers Count23
Fork Count23
Commits Count78
Has Issues Enabled
Issues Count1
Issue Open Count0
Pull Requests Count20
Pull Requests Open Count0
Pull Requests Close Count1
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private