middy/validator:如何为 JSON 字符串编写模式



我正在尝试在无服务器框架中验证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'],
.....
}

为我工作。

最新更新