Aws lambda middy/validator:如何为JSON字符串编写模式
我试图在无服务器框架中验证RESTAPI resp格式。使用middy/validator 输出模式Aws lambda middy/validator:如何为JSON字符串编写模式,aws-lambda,middleware,jsonschema,serverless-framework,Aws Lambda,Middleware,Jsonschema,Serverless Framework,我试图在无服务器框架中验证RESTAPI resp格式。使用middy/validator 输出模式 const outputSchema = { required: ['body', 'statusCode'], properties: { body: { type: 'object' }, statusCode: { type: 'number' } } } 在API中 const handler = async (eve
const outputSchema = {
required: ['body', 'statusCode'],
properties: {
body: {
type: 'object'
},
statusCode: {
type: 'number'
}
}
}
在API中
const handler = async (event, context) => {
...
return {
statusCode: 200,
body: JSON.stringify(resp)
};
}
...
export const handler = middy(handler).use(
validator({ outputSchema: outputSchema })
);
我收到了来自验证的错误,我可以看到在API中,body
是一个JSON字符串,但在模式中,body
是一个对象
如何编写模式来验证JSON字符串的结构
非常感谢您的任何建议。您发送的字符串化响应将不适用于架构,但该响应并非特定于serverless,而是api网关代理所需的响应。尝试返回未字符串化的结果,并使用另一个中间件格式化响应。退房或者编写自己的来处理最终格式。在定义的架构中添加“type”属性,并将其设置为strict type。 就你而言:
const schema{
type: 'object' //this!
required: ['body', 'statusCode'],
.....
}
为我工作。我不知道为什么要字符串化resp对象,因为这会使事情变得更困难。我想您可以对字符串化的JSON应用一些正则表达式检查:这是无服务器框架的要求,您必须再次对其进行重新解析以验证它。