How to use JSON-RPC with NodeJS Express?
We’ll use Express to take JSON-RPC requests.
- When it receives a “speak” request on
/cats
, it should respond with “meow”. - When it receives a “speak” request on
/dogs
, it should respond with “woof”.
Install Express to take requests and jayson to process them:
$ npm install express body-parser jayson
Create a server.js
:
const express = require('express')
const bodyParser = require('body-parser')
const jayson = require('jayson')
const cats = {
speak: function(args, callback) {
callback(null, 'meow')
}
}
const dogs = {
speak: function(args, callback) {
callback(null, 'woof')
}
}
const app = express()
app.use(bodyParser.urlencoded({extended: true}))
app.use(bodyParser.json())
app.post('/cats', jayson.server(cats).middleware())
app.post('/dogs', jayson.server(dogs).middleware())
app.listen(5000)
Start the server:
$ node server.js
Client
Use curl to send requests:
$ HDR='Content-type: application/json'
$ MSG='{"jsonrpc": "2.0", "method": "speak", "id": 1}'
$ curl -H $HDR -d $MSG http://localhost:5000/cats
{"jsonrpc":"2.0","result":"meow","id":1}
$ curl -H $HDR -d $MSG http://localhost:5000/dogs
{"jsonrpc":"2.0","result":"woof","id":1}
Updated 11 Sep 2018 thanks to Roman Frolov.