1.2.0 • Published 7 years ago

microservice.v2 v1.2.0

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

Microservice.v2

Fast and minimalist microservice framework for nodejs.

NPM Version NPM Downloads Linux Build Windows Build Test Coverage

Server-side

const Server = require("microservice.v2").Server
let service = new Server()
let collection = []

// Create an endpoint that can be triggered on POST /user/ 
service.expose("user", {
    create: {
        method: "POST",
        
        path: "@/", // '@' should be replaced by the namaspace name 'user'
        // path: "/",  // endpoint location should be POST /
        // path: null, // POST user/create path should be generated

        data: { // JSON parameter schema
          name: { type: 'string', required: true }
        }
        
        action: function (data, next) {
          let doc = {
            date: new Date(),
            name: data.params.name
          }
          collection.push(doc)
          // Respond to the current client (RPC or HTTP)
          next(null, {message: "entity was created", data: doc})
          // Broadcast this user create event to all listening client (RPC)
          // Usefull for sending data in realtime
          return this.broadcast("user.create", doc) // alias for this.io.sockets.emit
        }
    }
})

// Create service connection then start it
service.spawn({host: "0.0.0.0", port: 8080}).start()

HTTP Client

$ curl -X POST http://0.0.0.0:8080/user/ --data "name=Snow"

RPC Client

const Client = require("microservice.v2").Client
let client = new Client("http://0.0.0.0:8080")

client.listen("user.create", (err, payload) => {
     console.log(payload)     // do something with event payload
})

client.invoke("user.create", {name: "Jonh SNOW"}, (err, payload) => {
     console.log(payload)  // do something with the result payload
})

Installation

$ npm install microservice.v2

Features

  • Focus on high performance
  • Well tested
  • Robust routing based on Express.js
  • Easy route definition
  • RPC behaviour with Socket.io

Docs & Community

HELP Because this project is under development, all advises and pull request are welcom

Philosophy

The microservice.v2 philosophy is to provide small, robust tooling for HTTP/RPC servers, making it a great solution for APIs. This project would follow all conventions for microservice implementation.

Examples

To view the examples, clone the Express repo and install the dependencies:

$ git clone https://github.com/jhonore/microservice.v2.git --depth 1
$ cd microservice.v2
$ npm install

Then run whichever example you want:

$ npm run dist
$ node examples/CRUD

Tests

To run the test suite, first install the dependencies, then run npm test:

$ npm install
$ npm test

Benchmarking

Benchmark working on a 0.2 CPU core and a 2 Go memory container. To run it's test, first install the dependencies, then run npm run bench:

$ npm install
$ npm run bench

Documentation generator

To generate the documentation, first install the dependencies, then run npm run docs:

$ npm install
$ npm run docs

People

The original author of microservice.v2 is Judes HONORÉ

License

MIT