2.3.0 • Published 10 months ago
@rudi23/koa-yup-router v2.3.0
koa-yup-router
Koa router with yup input validation and Typescript support.
Installation
Install using npm
:
npm install @rudi23/koa-yup-router
NodeJS >= 12.0.0.
is required.
Features
- all features of @koa/router as it's built on top of it
- input validation using yup
- Typescript support for request params, query, headers and body
- type casting request values
- body parsing using co-body and await-busboy
- multiple method support
- router middleware support
- custom error handler
- exposed route definitions
- meta data support
- supports both: CommonJs and ES Modules
Example
Typescript
import Koa from 'koa';
import YupRouter from '@rudi23/koa-yup-router';
const paramsSchema = yup.object({
id: yup.number().required(),
});
const querySchema = yup.object({
force: yup.boolean(),
});
const bodySchema = yup.object({
firstName: yup.string().required(),
lastName: yup.number().required(),
age: yup.number().required().min(0).max(100),
job: yup.string(),
});
const router = new YupRouter();
router.get('/', (ctx, next) => {
ctx.body = 'Hello koa-yup-router!';
});
router.addRoute<TypeOf<typeof paramsSchema>, TypeOf<typeof querySchema>, TypeOf<typeof bodySchema>>(
{
method: 'put',
path: '/user/:id',
validate: {
type: 'json',
body: bodySchema,
params: paramsSchema,
query: querySchema,
},
handler: (ctx) => {
ctx.body = {
params: ctx.params,
query: ctx.request.query,
body: ctx.request.body,
headers: ctx.request.headers,
};
},
},
);
const app = new Koa();
app.use(router.middleware());
app.listen(3000);
Javascript - CommonJS
const Koa = require('koa');
const YupRouter = require('@rudi23/koa-yup-router');
const paramsSchema = yup.object({
id: yup.number().required(),
});
const querySchema = yup.object({
force: yup.boolean(),
});
const bodySchema = yup.object({
firstName: yup.string().required(),
lastName: yup.number().required(),
age: yup.number().required().min(0).max(100),
job: yup.string(),
});
const router = new YupRouter();
router.get('/', (ctx, next) => {
ctx.body = 'Hello koa-yup-router!';
});
router.addRoute({
method: 'put',
path: '/user/:id',
validate: {
type: 'json',
body: bodySchema,
params: paramsSchema,
query: querySchema,
},
handler: (ctx) => {
ctx.body = {
params: ctx.params,
query: ctx.request.query,
body: ctx.request.body,
headers: ctx.request.headers,
};
},
});
const app = new Koa();
app.use(router.middleware());
app.listen(3000);
Javascript - ES Modules
import Koa from 'koa';
import YupRouter from '@rudi23/koa-yup-router';
const paramsSchema = yup.object({
id: yup.number().required(),
});
const querySchema = yup.object({
force: yup.boolean(),
});
const bodySchema = yup.object({
firstName: yup.string().required(),
lastName: yup.number().required(),
age: yup.number().required().min(0).max(100),
job: yup.string(),
});
const router = new YupRouter();
router.get('/', (ctx, next) => {
ctx.body = 'Hello koa-yup-router!';
});
router.addRoute({
method: 'put',
path: '/user/:id',
validate: {
type: 'json',
body: bodySchema,
params: paramsSchema,
query: querySchema,
},
handler: (ctx) => {
ctx.body = {
params: ctx.params,
query: ctx.request.query,
body: ctx.request.body,
headers: ctx.request.headers,
};
},
});
const app = new Koa();
app.use(router.middleware());
app.listen(3000);
LICENSE
2.3.0
10 months ago
2.2.4
2 years ago
2.2.1
2 years ago
2.2.0
2 years ago
2.1.1
2 years ago
2.2.3
2 years ago
2.2.2
2 years ago
2.1.0
2 years ago
2.0.1
2 years ago
2.0.0
2 years ago
1.0.9
3 years ago
1.0.8
3 years ago
1.0.7
3 years ago
1.0.6
3 years ago
1.0.5
3 years ago
1.0.4
3 years ago
1.0.3
3 years ago
1.0.2
3 years ago
1.0.1
3 years ago
1.0.0
3 years ago