@abradley2/koa-validated-route 中文文档教程

发布于 7年前 浏览 18 项目主页 更新于 3年前

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)
)
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文