microservice.v2 v1.2.0
Microservice.v2
Fast and minimalist microservice framework for nodejs.
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
- Documentation
- Github Repository for Official packages
- Visit the Wiki
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É