@abradley2/koa-validated-route 中文文档教程
Koa validated route
npm install --save @abradley2/koa-validated-route
这是一个非常简单的 koa-route 包装器a> 和 is-my-json-valid。 请参阅他们的文档,了解路由参数如何传递、匹配和架构 验证工作。 这只是将它们添加到一个简单的包装器中,这样您 不需要手动初始化验证器,并自己发回 400 错误列表
API
使用主导出方法,就像使用 koa-route 一样 模块只是将你的处理程序和代理包装到它。 对于任何路由处理程序 具有 validate
对象属性,此属性将用于生成 请求正文或查询的验证模式(请注意,您不需要 在任何主体或查询模式的根上使用 type: object, required: true
打扰, 这是照顾)。
此验证的基础规范 是这个大而可怕的规范文档,里面有很多词 但实际上在实践中相当简单
Example
const app = require('koa')()
const withValidation = require('koa-validated-route')
function submitRoute(ctx, sessionId) {
// we won't reach here if the validation fails.
// so now we can proceed with confidence!
}
submitRoute.schema = {
body: {
title: {
type: 'string',
required: true
},
isMarried: {
type: 'boolean',
required: true
}
},
query: {
userId: {
type: 'string', // all query params are going to be string so duh
required: false
}
}
}
app.use(
withValidation.post('/submit/:sessionId', submitRoute)
)
Koa validated route
npm install --save @abradley2/koa-validated-route
This is a very simple wrapper around koa-route and is-my-json-valid. Refer to their documentation for how route argument passing, matching, and schema validation work. This simply adds them together in a simple wrapper so you don't need to manually initialize validators, and send back 400s with the error list yourself
API
Use the main exported method the same you would with koa-route as this module simply wraps your handler and proxies to that. For any route handler that has a validate
object property, this property will be used to generate validation schemas for the body or query of the request (note you don't need to bother with type: object, required: true
on the root of any body or query schema, this is taken care of).
The specification underlying this validation is this big scary spec document with lots of words but it's actually fairly straight-forward in practice
Example
const app = require('koa')()
const withValidation = require('koa-validated-route')
function submitRoute(ctx, sessionId) {
// we won't reach here if the validation fails.
// so now we can proceed with confidence!
}
submitRoute.schema = {
body: {
title: {
type: 'string',
required: true
},
isMarried: {
type: 'boolean',
required: true
}
},
query: {
userId: {
type: 'string', // all query params are going to be string so duh
required: false
}
}
}
app.use(
withValidation.post('/submit/:sessionId', submitRoute)
)