1.3.1 • Published 12 months ago
@nullrpc/server v1.3.1
@nullrpc/server
You probably shouldn't use this yet.
Installation
npm install @nullrpc/server
import {
command,
createRouter
} from "@nullrpc/server";
Basics
Commands
const helloWorldCommand = command().handler(({success}) => {
return success("Hello World");
});
Router
const rpcRouter = createRouter({
"helloWorld": helloWorldCommand,
});
const router = express.Router();
router.post("/rpc", rpcRouter);
const result = await axios.post("/rpc", {
jsonrpc: "2.0",
method: "helloWorld",
params: null,
id: 1,
});
console.log(result.data);
// {
// jsonrpc: "2.0",
// result: "Hello World",
// id: 1,
// }
See Also: @nullrpc/client
Commands In-Depth
Inject Context
Middleware
Modify Context
Validation
Handlers
Immutability & Reusability
const baseCommand = command()
.inject(req => {
return {
session: req.session,
user: req.user,
csrf: req.get("X-CSRF-Token"),
};
});
const signupCommand = baseCommand
.validate(
Joi.object({
username: Joi.string().min(3).max(24),
password: Joi.string().min(3).max(128),
})
)
.handler(({params, success, fail}) => {
const {username, password} = params;
// .....
return success({username, token});
});
const loginCommand = baseCommand
.validate(
Joi.object({
username: Joi.string().min(3).max(24),
password: Joi.string().min(3).max(128),
})
)
.handler(({params, success, fail}) => {
const {username, password} = params;
// .....
return success({username, token});
});