如何使用 Amplify REST 请求传递正文数据?

Ash*_*own 7 javascript react-native axios aws-amplify

我正在使用AWS amplify REST API向 React Native 中的 lambda 函数发出 get 请求。API/Lambda 函数由 Amplify CLI 生成。

  const getData = async (loca) => {
    const apiName = "api1232231321";
    const path = "/mendpoint";
    const myInit = {
      body: {
        name: "bob",
      },
      queryStringParameters: {
        location: JSON.stringify(loca),
      },
    };

    return API.get(apiName, path, myInit);
  };
Run Code Online (Sandbox Code Playgroud)

除非我从该请求中删除正文,否则它只会返回Error: Network Error,没有其他详细信息。queryStringParameters如果我删除身体对象,我似乎能够得到很好的结果。

如果我这样做,请求就会顺利进行,不会出现错误

const myInit = JSON.stringify({
  body: {
    name: "bob",
  },
});
Run Code Online (Sandbox Code Playgroud)

但是lambda 中的 ( bodyevent.body event) 始终为 null。如果更改body为同样的结果data。我的第二个想法是,也许我只能通过POST请求传递主体数据,但是文档似乎表明您可以使用请求,GET因为它记录了如何访问所述主体数据......

拉姆达函数

exports.handler = async(event) => {
  const response = {
    statusCode: 200,
    body: JSON.stringify(event),
  };
  return response;
};
Run Code Online (Sandbox Code Playgroud)

如何正确传递身体数据?

kjo*_*nes 5

Amplify SDK 不会在通话时发送正文API.get()。您的第一个示例看起来不错,但您需要使用API.post()(或放置)。

  const getData = async (loca) => {
    const apiName = "api1232231321";
    const path = "/mendpoint";
    const myInit = {
      body: {
        name: "bob",
      },
      queryStringParameters: {
        location: JSON.stringify(loca),
      },
    };

    return API.post(apiName, path, myInit);
  };
Run Code Online (Sandbox Code Playgroud)