下面是一个使用 AWS API Gateway 和 JSON Schema 的示例代码,以验证子对象的方式:
首先,创建一个 JSON Schema,例如 schema.json:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"parent": {
"type": "object",
"properties": {
"child": {
"type": "object",
"properties": {
"name": {
"type": "string"
}
},
"required": ["name"]
}
},
"required": ["child"]
}
},
"required": ["parent"]
}
接下来,创建一个 AWS Lambda 函数,例如 validateSchema.js,使用 ajv 库来验证请求的 JSON 对象:
const Ajv = require('ajv');
// 加载 JSON Schema
const schema = require('./schema.json');
// 创建 Ajv 实例
const ajv = new Ajv();
// 编译 JSON Schema
const validate = ajv.compile(schema);
exports.handler = async (event) => {
try {
// 解析请求的 JSON 对象
const body = JSON.parse(event.body);
// 验证 JSON 对象是否符合 JSON Schema
const valid = validate(body);
if (valid) {
return {
statusCode: 200,
body: JSON.stringify({ message: 'Validation successful' })
};
} else {
return {
statusCode: 400,
body: JSON.stringify({ message: 'Validation failed', errors: validate.errors })
};
}
} catch (error) {
return {
statusCode: 500,
body: JSON.stringify({ message: 'Internal server error' })
};
}
};
最后,将此 Lambda 函数与 AWS API Gateway 集成。在 API Gateway 中创建一个 POST 方法,并将其配置为使用 Lambda 集成。确保将请求正文的 Content-Type 设置为 application/json。
现在,当向 API Gateway 发送 POST 请求时,它将首先验证请求正文是否符合定义的 JSON Schema。如果验证成功,Lambda 函数将返回状态码 200 和成功消息。如果验证失败,将返回状态码 400 和验证错误。
请注意,以上示例中使用的是 AWS Lambda 和 AWS API Gateway,如果您使用其他框架或工具,则需要相应地调整代码。