使用 fast-json-stringify

问题描述

我想要做的是向来自 fastify 路由的架构响应添加验证。

按照 Fastify here 的文档,我们可以看到这一点

用于验证请求的 Ajv fast-json-stringify 用于响应正文的序列化

与改进和添加响应验证相关,我想做的是在发送响应时检查架构。

fast-json-stringify 支持不同的选项,包括格式,但如果你阅读文档,他们说他们支持 JSON 模式。 Jsonschema 支持电子邮件格式,您可以将 here 视为内置格式,但是当我尝试在 Fastify 上使用它时,如下所示:

{
  response: {
    200: {
      type: 'object',required: ['email'],properties: {
        email: {
          type: 'string',format: 'email',}
      }
    }
  }
}

并尝试返回广告响应

reply.code(200).send({ email: 'test' })

我唯一能做的验证是当我将类型设置为整数并尝试返回一个字符串时。

您是否知道是否可以使用带有 fast-json-stringify 的 ajv 格式来向响应模式添加验证并使用来自 ajv 的格式并添加新格式?

非常感谢!

解决方法

fast-json-stringify 进行序列化,而不是验证。

提供给它的 json 模式将仅用于序列化声明的 properties 和一些类型检查,如 integerarray

  • 不支持 enum 关键字
  • format 关键字仅支持日期 as documented

enter image description here

要实现您的目标,您应该使用此插件:fastify-response-validation,它将在序列化过程之前添加响应正文的验证步骤。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...