我正在尝试在无服务器框架中验证REST API resp格式。使用 middy/验证器
输出架构
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 字符串的结构
任何建议不胜感激。
您发送的字符串化响应不适用于架构,但该响应并非特定于无服务器 - 它是 API 网关代理所需的响应。尝试返回非字符串化结果并使用另一个中间件来格式化响应。查看自动代理响应。或者编写自己的格式来处理最终格式。
在定义的架构中添加"type"属性,并将其设置为严格类型。 在您的情况下:
const schema{
type: 'object' //this!
required: ['body', 'statusCode'],
.....
}
为我工作。