GithubHelp home page GithubHelp logo

guoyu07 / node-koajs-rest-skeleton Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ria-com/node-koajs-rest-skeleton

0.0 0.0 0.0 60 KB

A simple Koajs 2 Application REST Skeleton

License: GNU General Public License v3.0

Dockerfile 3.85% JavaScript 94.46% Shell 1.68%

node-koajs-rest-skeleton's Introduction

node-koajs-rest-skeleton v3.4

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

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.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

node-koajs-rest-skeleton's People

Contributors

apelsyn avatar rm-yakovenko avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.