我正在尝试在无服务器框架中验证REST API resp格式。使用middy/validator
输出模式
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字符串,但在schema中,body
是一个对象。
如何编写模式来验证JSON字符串的结构
任何建议都是值得感谢的。
发布于 2020-07-13 05:55:06
您发送的stringified响应将不适用于模式,但该响应不是特定于serverless的-它是api网关代理所需的响应。尝试返回非字符串化的结果,并使用另一个中间件来格式化响应。查看autoproxyresponse。或者编写自己的代码来处理最终的格式化。
发布于 2021-06-01 07:12:17
在您定义的模式中添加" type“属性,并将其设置为strict type。在您的案例中:
const schema{
type: 'object' //this!
required: ['body', 'statusCode'],
.....
}
对我很管用。
https://stackoverflow.com/questions/62836558
复制相似问题