Swagger 使用allOf和其他属性进行招摇过市数据验证

Swagger 使用allOf和其他属性进行招摇过市数据验证,swagger,ajv,Swagger,Ajv,需要帮助使用allOf和additionalProperties:false解决模式上的虚张声势定义吗 这里是我的JSON模式 样本数据 我使用AJV 6.10.0来验证我的数据,但我认为我有一个错误的模式定义。 使用Ajv选项: ajv = require('ajv')({ allErrors: true, verbose: true, removeAdditional: false, })

需要帮助使用allOf和additionalProperties:false解决模式上的虚张声势定义吗

这里是我的JSON模式

样本数据

我使用AJV 6.10.0来验证我的数据,但我认为我有一个错误的模式定义。 使用Ajv选项:

        ajv = require('ajv')({
            allErrors: true,
            verbose: true,
            removeAdditional: false,
        });
实际上,我有6个错误,它们警告每个属性的附加属性

在验证allOf name和phone中的第一个对象时,验证发现地址、邮政编码、城市和州有错误

如果我在验证地址模式期间删除了第一个allOf对象名phone的附加属性,则验证在name和phone上发现了错误


如何解决我的模式定义

我已设法使其正常工作,我已将您的数据结构更新为更具逻辑性,请参见以下内容:

JSON模式

{ $schema:http://json-schema.org/draft-07/schema, 类型:对象, 所需:[ 传送 ], 特性:{ 交付:{ 类型:对象, 附加属性:false, 所需:[ 名称 电话 住址 ], 特性:{ 姓名:{ 类型:字符串, 最大长度:1024 }, 电话:{ 类型:字符串, 最大长度:24 }, 地址:{ $ref:/definitions/地址 } } } }, 定义:{ 地址:{ 类型:对象, 附加属性:false, 特性:{ 地址:{ 类型:字符串, 最大长度:1024 }, 后代码:{ 类型:字符串, 最大长度:12 }, 城市:{ 类型:字符串, 最大长度:512 }, 声明:{ 类型:字符串, 最大长度:512 } } } } } 样本数据

{ 交付:{ 地址:{ 地址:我的地址, postalCode:mypostalCode, 城市:我的城市, 州:mystate }, 姓名:我的名字, 电话:我的电话 } } 如果您想测试它,您可以在这里进行:

                   delivery: {
                        address: 'my address',
                        postalCode: 'my postalCode',
                        city: 'my city',
                        state: 'my state',
                        name: 'my name',
                        phone: 'my phone'
                    },

        ajv = require('ajv')({
            allErrors: true,
            verbose: true,
            removeAdditional: false,
        });