Reactjs AWS Lambda事件结构使用React应用程序中的Axios从API网关获取完整请求

Reactjs AWS Lambda事件结构使用React应用程序中的Axios从API网关获取完整请求,reactjs,aws-lambda,axios,aws-api-gateway,Reactjs,Aws Lambda,Axios,Aws Api Gateway,我正在为react应用程序实现一种轮询机制,使用axios发布到一个API,该API从AWS触发Lambda函数 同一个Lambda函数由来自Android应用程序的同一API触发,并且一切都按其应有的方式运行。现在,Lambda函数只打印日志中的事件 Android应用程序中的此事件在日志中显示如下: {'hr': '[67, 67, 69, 70, 66, 67, 68, 72, 71, 72]'} 但当我使用axios从React应用程序发帖时,我得到了以下信息: {'resource'

我正在为react应用程序实现一种轮询机制,使用axios发布到一个API,该API从AWS触发Lambda函数

同一个Lambda函数由来自Android应用程序的同一API触发,并且一切都按其应有的方式运行。现在,Lambda函数只打印日志中的
事件

Android应用程序中的此事件在日志中显示如下:

{'hr': '[67, 67, 69, 70, 66, 67, 68, 72, 71, 72]'}
但当我使用axios从React应用程序发帖时,我得到了以下信息:

{'resource': '/qmed_data_feed', 'path': '/qmed_data_feed', 'httpMethod': 'OPTIONS', 'headers': {'accept': '/', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'en,es-AR;q=0.9,es;q=0.8,es-PY;q=0.7,en-US;q=0.6', 'access-control-request-headers': 'content-type', 'access-control-request-method': 'POST', 'Host': '2osztvec25.execute-api.us-east-2.amazonaws.com', 'origin': 'http://localhost:3000', 'referer': 'http://localhost:3000/', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'cross-site', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36', 'X-Amzn-Trace-Id': 'Root=1-5eb222b9-dee35fb587d5ed0083dc8600', 'X-Forwarded-For': '181.94.228.87', 'X-Forwarded-Port': '443', 'X-Forwarded-Proto': 'https'}, 'multiValueHeaders': {'accept': ['/'], 'accept-encoding': ['gzip, deflate, br'], 'accept-language': ['en,es-AR;q=0.9,es;q=0.8,es-PY;q=0.7,en-US;q=0.6'], 'access-control-request-headers': ['content-type'], 'access-control-request-method': ['POST'], 'Host': ['2osztvec25.execute-api.us-east-2.amazonaws.com'], 'origin': ['http://localhost:3000'], 'referer': ['http://localhost:3000/'], 'sec-fetch-dest': ['empty'], 'sec-fetch-mode': ['cors'], 'sec-fetch-site': ['cross-site'], 'User-Agent': ['Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36'], 'X-Amzn-Trace-Id': ['Root=1-5eb222b9-dee35fb587d5ed0083dc8600'], 'X-Forwarded-For': ['181.94.228.87'], 'X-Forwarded-Port': ['443'], 'X-Forwarded-Proto': ['https']}, 'queryStringParameters': None, 'multiValueQueryStringParameters': None, 'pathParameters': None, 'stageVariables': None, 'requestContext': {'resourceId': 'x2sz4i', 'resourcePath': '/qmed_data_feed', 'httpMethod': 'OPTIONS', 'extendedRequestId': 'MFpdBFRViYcF60Q=', 'requestTime': '06/May/2020:02:36:41 +0000', 'path': '/default/qmed_data_feed', 'accountId': '262418700729', 'protocol': 'HTTP/1.1', 'stage': 'default', 'domainPrefix': '2osztvec25', 'requestTimeEpoch': 1588732601628, 'requestId': 'ef1a6730-3fb3-4262-8a64-8492c2c26eeb', 'identity': {'cognitoIdentityPoolId': None, 'accountId': None, 'cognitoIdentityId': None, 'caller': None, 'sourceIp': '181.94.228.87', 'principalOrgId': None, 'accessKey': None, 'cognitoAuthenticationType': None, 'cognitoAuthenticationProvider': None, 'userArn': None, 'userAgent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36', 'user': None}, 'domainName': '2osztvec25.execute-api.us-east-2.amazonaws.com', 'apiId': '2osztvec25'}, 'body': None, 'isBase64Encoded': False}
而body键为空:
“body”:无,

我使用Api测试仪测试了Api,它也工作得很好

这是我用Axios发布的代码:

import { useState, useEffect } from 'react';
import axios from 'axios';


const payload = {
  command: "get",
  user: "000"
}

export const useLambdaApi = () => {
  const [data1, updateData1] = useState([]);
  const api = 'https://2osztvec25.execute-api.us-east-2.amazonaws.com/default/qmed_data_feed';
  useEffect(() => {
    const fetchData = async () => {
      try{
        let result = {};
        result = await axios.post(api, payload);
        console.log(result)
      } catch (error){
        console.log("ERROR",error);
      }
    }
    fetchData();
  },[]);
  return [data1, updateData1];
}
提前感谢您的帮助

编辑

因此,我在react应用程序中得到的响应是以下错误:

Access to XMLHttpRequest at '<apiURL>' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
从源代码访问位于“”的XMLHttpRequesthttp://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在'access control Allow Origin'标头。

我知道这可能是报头的问题,但那只是因为Lambda函数失败,出现了一个键错误,并且没有返回报头。问题是React应用程序发送的请求内容

我也遇到了同样的问题。。。你都明白了吗?没发现问题。。。一些规范改变了,我们放弃了轮询方法。对不起,我也有同样的问题。。。你都明白了吗?没发现问题。。。一些规范改变了,我们放弃了轮询方法。很抱歉