如何使用 Fluent-json-schema 验证模式的所有属性?

问题描述 投票:0回答:1

我希望能够验证架构中的所有属性,但我收到一个错误,其中仅包含一个缺失的属性,而不是所有属性。我有以下架构:

const headersSchema = S.object()
  .prop('platform', S.string()).required()
  .prop('device-data', S.string()).required()
  .prop('device-id', S.string()).required()
  .prop('consumer-id', S.string()).required()
  .prop('version', S.string()).required()

这是我遇到的错误:

[
  {
    "instancePath": "",
    "schemaPath": "#/required",
    "keyword": "required",
    "params": {
      "missingProperty": "device-data"
    },
    "message": "must have required property 'device-data'"
  }
]

但我不会在标题上发送两个属性:

device-data
device-id
。我想收到一个错误,表明缺少这 2 个属性,但我没有提交。

这是我的路线:

server.post(
  '/headers',
  {
    schema: {
      headers: headersSchema
    }
  },
  () => {}
)
node.js json jsonschema fastify
1个回答
0
投票

这是一个ajv设置,您必须配置它,因为它可能会导致DOS攻击:

const fastify = require('fastify')({
  ajv: {
    customOptions: {
      allErrors: true
    }
  }
})

关于DOS攻击:

  • 如果您验证数组项目,攻击者可能会发送包含一百万个项目的有效负载,导致您的服务器忙于验证所有项目。

来源:

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.