使用 ajv 验证 JSON Hyper Schema
Validating JSON Hyper Schema with ajv
我正在尝试使用 ajv 模块来验证一些输入。我用常规的 JSON 架构得到了它,但我想验证多条路线并使用 links 数据来构建文档,但我对如何设置它感到困惑。这是我的架构:
{
"$schema": "http://json-schema.org/draft-04/hyper-schema#",
"title": "Questions",
"type": "object",
"definitions": {
"companyId": {
"type": "string",
"minLength": 3,
"maxLength": 20
}
},
"links":[
{
"title": "List",
"href": "/questions",
"method": "POST",
"rel": "self",
"schema": {
"properties": {
"companyId": {
"$ref": "#/definitions/companyId"
}
},
"required": ["companyId"]
}
}
]
}
还有我的代码:
const schema = require('./schemas/questions.json');
const hyperSchema = require('../schemas/hyper-schema.json');
const Ajv = require('ajv');
const ajv = new Ajv({ allErrors: true, v5: true });
ajv.addMetaSchema(hyperSchema, undefined, true);
const validate = ajv.compile(schema);
const valid = validate(input);
console.log(valid)
我的问题是,一旦我加载了我的架构,我该如何告诉 ajv link 架构要根据什么进行验证?我将有多个路由 (links) 具有不同的输入来验证。
此外,架构设置是否正确?
万一其他人需要这个,我使用了这样的 JSON 指针:
const ajv = new Ajv({ allErrors: true, removeAdditional: true, v5: true });
ajv.addMetaSchema(hyperSchema, undefined, true);
ajv.addSchema(schema, 'questions.json');
const valid = ajv.validate({ $ref: 'questions.json#/links/0/schema' }, input);
我正在尝试使用 ajv 模块来验证一些输入。我用常规的 JSON 架构得到了它,但我想验证多条路线并使用 links 数据来构建文档,但我对如何设置它感到困惑。这是我的架构:
{
"$schema": "http://json-schema.org/draft-04/hyper-schema#",
"title": "Questions",
"type": "object",
"definitions": {
"companyId": {
"type": "string",
"minLength": 3,
"maxLength": 20
}
},
"links":[
{
"title": "List",
"href": "/questions",
"method": "POST",
"rel": "self",
"schema": {
"properties": {
"companyId": {
"$ref": "#/definitions/companyId"
}
},
"required": ["companyId"]
}
}
]
}
还有我的代码:
const schema = require('./schemas/questions.json');
const hyperSchema = require('../schemas/hyper-schema.json');
const Ajv = require('ajv');
const ajv = new Ajv({ allErrors: true, v5: true });
ajv.addMetaSchema(hyperSchema, undefined, true);
const validate = ajv.compile(schema);
const valid = validate(input);
console.log(valid)
我的问题是,一旦我加载了我的架构,我该如何告诉 ajv link 架构要根据什么进行验证?我将有多个路由 (links) 具有不同的输入来验证。
此外,架构设置是否正确?
万一其他人需要这个,我使用了这样的 JSON 指针:
const ajv = new Ajv({ allErrors: true, removeAdditional: true, v5: true });
ajv.addMetaSchema(hyperSchema, undefined, true);
ajv.addSchema(schema, 'questions.json');
const valid = ajv.validate({ $ref: 'questions.json#/links/0/schema' }, input);