与lambda通信的API网关请求的响应主体应该是什么样的?

时间:2019-02-28 16:14:47

标签: amazon-web-services api cors swagger

一个小背景:我正在编写一个聊天机器人应用程序,以学习如何使用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"
        }
      }
    ]

  };

0 个答案:

没有答案