一个小背景:我正在编写一个聊天机器人应用程序,以学习如何使用AWS和某些云计算工具。
根据关于如何在JavaScript代码中使用API Gateway SDK的AWS文档,我们应该将我们的请求编码为参数(在示例中命名为body
),并馈入类似({{1 }})。当我通过API网关的“测试”功能中的“请求正文”字段发送以下内容时,API资源中的lambda(在此示例中为apigClient.chatbotPost(params, body, additionalParams)
)成功返回了预期结果。这是我通过测试响应正文发送的内容:
POST
从文档中获取提示,我将api的body参数设置为要发送的JSON。该JSON符合我在上载到API-Gateway的Swagger Yaml文件中定义的模型。
[
{
"type": "string",
"unstructured": {
"id": "12345",
"text": "string",
"timestamp": "string"
}
}
]
与第一个示例不同,我得到了错误的行为,包括在浏览器控制台中出现以下500响应和以下CORS错误(已删除URL):
从原点“空”访问“已编辑”处的XMLHttpRequest已 被CORS政策封锁:对预检请求的响应未通过 访问控制检查:没有“ Access-Control-Allow-Origin”标头 出现在请求的资源上。
我无法确定这是CORS错误还是我通过body参数(甚至两者)发送JSON的错误。我已使用默认值为我的API函数启用了CORS。我也不确定我是否正确设置了params和AdditionalParams参数。我发现有关这两个参数的内容的文档不清楚。有关更多上下文,这是我在sagger yaml中为POST API调用指定的内容:
let body = {
// This is where you define the body of the request,
"messages": [
{
"type": "string",
"unstructured": {
"id": "string",
"text": "string",
"timestamp": "string"
}
}
]
};