返回介绍

route.options.validate

发布于 2024-02-12 19:53:56 字数 5798 浏览 0 评论 0 收藏 0

默认值: { headers: true, params: true, query: true, payload: true, failAction: 'error' } .

每个请求组件的请求输入验证。

route.options.validate.errorFields

默认值: none.

一个可选对象,其错误字段被复制到每个验证错误响应中。

route.options.validate.failAction

默认值: 'error' (返回 Bad Request (400) 错误).

failAction value 它确定如何处理失败的验证。 当为函数时, err 参数包括 err.output.payload.validation.source 下的错误验证类型.

route.options.validate.headers

默认值: true (没有验证).

传入请求 header 的验证规则:

  • true - 允许任何 header(未执行验证)。

  • joi 验证对象。

  • 使用签名 async function(value, options) 的验证函数,其中:

    • value - request.headers 包含请求 header 对象。
    • options - options .
    • 如果有返回值,该值用作新的 request.headers 值,原始值存储在 request.orig.headers 中。 否则,header 保持不变。 如果抛出错误,则根据 failAction 处理错误。

请注意,所有 header 字段名称必须为小写,以匹配按节点规范化的 header。

route.options.validate.options

默认值: none.

传递给 joi 规则或自定义验证方法的选项对象。用于设置全局选项,例如 stripUnknownabortEarly (可用的完整列表 here )

如果定义了自定义验证函数(参见上面的 headers , params , query , 或 payload ),则 options 可以将任意对象作为第二个参数传递给该函数。

其他输入值 (i.e. headers , query , params , payload , state , app , and auth ) 被添加到验证 context 下的 options 对象中 (参考规则 Joi.ref('$query.key') )。

请注意,验证按顺序执行 (i.e. headers, params, query, and payload), 并且如果使用类型转换 (例如 转换一个字符串为数字), 尚未验证的输入值将返回原始值,未经验证和未经修改的值。

如果在服务器 routes 级别和路由级别定义了 headers , params , query , 和 payload 的验证规则,单个路由设置会覆盖路由默认值(规则未合并)。

route.options.validate.params

默认值: true (no validation).

传入请求路径参数的验证规则, 将路径与路径匹配后,提取任何参数, 并存储在 request.params , 其中:

  • true - 允许任何 path 参数 (没有进行验证).

  • 一个 joi 验证对象

  • 使用签名 async function(value, options) 的验证函数,其中:

    • value - the request.params object containing the request path parameters.
    • options - options .
    • 如果返回一个值, 则该值用作新的 request.params 值,原始值存储在 request.orig.params . 否则,path 参数保持不变 如果抛出错误,则根据 failAction 处理错误 。

请注意,未将验证规则与路径路径参数定义匹配将导致所有请求失败。

route.options.validate.payload

默认值: true (no validation).

传入请求 payload(request body)的验证规则,其中:

  • true - 允许任何 payload (没有进行验证).

  • false - 不允许任意 payload

  • 一个 joi 验证对象

    • 请注意,空的 payload 由 null 值表示。 如果提供了验证模式并且允许空 payload, 必须通过将规则设置 joi 格式允许为 null (例如 Joi.object({ /* keys here */ }).allow(null) ).
  • 使用签名 async function(value, options) 的验证函数,其中:

    • value - 包含请求 payload 的 request.payload 对象。
    • options - options .
    • 如果返回一个值, 则该值用作新的 request.payload 值,原始值存储在 request.orig.payload . 否则,payload 值保持不变 如果抛出错误,则根据 failAction 处理错误 。

请注意,验证大型 payload 并修改它们将导致 payload 的内存重复(因为保留了 payload), 以及验证大量数据的显着性能成本。

route.options.validate.query

默认值: true (no validation).

传入请求 URI 查询组件的验证规则('?' 和 '#' 之间的 URI 的键值部分)。查询被解析为其各自的键值对,解码,在验证之前存储在 request.query 中。其中:

  • true - 允许的任何 query 参数值 (没有进行验证).

  • false -不允许 query 参数值。

  • a joi validation object.

  • 使用签名 async function(value, options) 的验证函数,其中:

    • value - 包含请求 query 参数的 request.query 对象。
    • options - options .
    • 如果返回一个值, 则该值用作新的 request.query 值, 原始值存储在 request.orig.query 。 否则,query 参数保持不变。如果抛出错误,则根据 failAction 处理错误 。 .

请注意,对查询参数的更改不会反映在 request.url 中。

route.options.validate.state

默认值: true (不验证).

Validation rules for incoming cookies. The cookie header is parsed and decoded into the request.state prior to validation. Where:

  • true - 任何 cookie 值都允许 (没有进行验证)。

  • false - 不允许使用 cookie。

  • joi 验证对象

  • 使用签名 async function(value, options) 的验证函数,其中:

    • value - the request.state object containing all parsed cookie values.
    • options - options .
    • 如果返回一个值, 则该值用作新的 request.state 值 原始值存储在 request.orig.state . 否则,cookie 值保持不变。如果抛出错误,则根据 failAction 处理错误 。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文