In the sample I used named parameters.
const express = require('express') const bodyParser = require('body-parser') const jayson = require('jayson') const rpcBundle = { add: function(a, b, callback) { console.log({a, b}) let c = a + b; callback(null, c); } } const app = express() app.use(bodyParser.urlencoded({extended: true})) app.use(bodyParser.json()) app.post('/api', jayson.server(rpcBundle, { collect: false }).middleware()) app.listen(80)
var jayson = require('jayson'); var client = jayson.client.http('http://localhost:80/api'); var functionName = 'add'; var functionParams = {a: 1, b: 2} client.request(functionName, frunctionParams, function(err, response) { if (err) throw err; console.log(response.result); });
$ node jclient.js
{ result: 3 }
POST /api HTTP/1.1
Content-Length: 99
Content-Type: application/json; charset=utf-8
Accept: application/json
Host: localhost
Connection: close
{
"method":"add",
"jsonrpc":"2.0",
"params":{"a":1,"b":2},
"id":"933587cc-6669-4957-96e3-8af17d457c43"
}
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Length: 72
Content-Type: application/json; charset=utf-8
{
"jsonrpc":"2.0",
"id":"933587cc-6669-4957-96e3-8af17d457c43",
"result":3
}
'use strict' import jayson from 'jayson/lib/client/browser' import axios from 'axios' var createTransport = function(url) { return function(request, callback) { axios .post(url, request, { transformResponse: [function (data) { return data }]} ) .then(function(res) { callback(null, res.data) }) .catch(function(err) { callback(err) }) } } export default function(url) { var transport = createTransport(url) return jayson(transport, {}) }
<template> <div> <button class="button" v-on:click="getRandom">Update</button> <p> <pre>{{data}}</pre> </p> </div> </template> <script> import jclient from './jclient' export default { data: function() { return { data: {} } }, methods: { getRandom() { var client = jclient('https://api.random.org/json-rpc/1/invoke') client.request('generateIntegers', { apiKey: 'cd56b681-c001-4178-801e-53bxxxxxxxxxx', n: 3, min: 10, max: 99 }, (err, response) => { if (!err) this.data = response.result } ) } } } </script>