【问题标题】:How can I send data to aws lambda via aws gateway?如何通过 aws 网关将数据发送到 aws lambda?
【发布时间】:2018-01-15 09:37:00
【问题描述】:

我刚开始学习 aws lambda & gateway,现在我正在尝试使用 aws Lambda 制作一个简单的 API。

这是我的 lambda 函数。

'use strict'
console.log('Loading event');

exports.handler = function(event, context, callback) {
var name = (event.name === undefined? 'No-Name' : event.name);
callback(null, {"Your-name" : name}); // SUCCESS with message
};

这是我的映射模板。(Content-Type : application/json)

{"name" : "$input.params('name')"}

我想改变name的值,所以我尝试了,

var xhr = new XMLHttpRequest();
xhr.open('GET', 'my api url...');
xhr.onreadystatechange = function () {
   if (xhr.readyState === 4) {
       console.log(xhr.response);
   }
};
xhr.setRequestHeader("Content-Type", "application/json");
xhr.responseType = 'json';
var name = "JACK";
xhr.send(name);

它不起作用。 我想要类似 {"Your-name" : "JACK"} 但它只返回 {"Your-name" : "No-Name"}。 我怎么解决这个问题?

【问题讨论】:

  • 这是一个愚蠢的错误。我必须使用“POST”,而不是“GET”。

标签: amazon-web-services xmlhttprequest aws-lambda aws-api-gateway


【解决方案1】:

你试过了吗:

var json = JSON.stringify({ name: "JACK" });
xhr.send(json);

?

【讨论】:

  • lambda函数的输入格式必须是JSON,这就是它不起作用的原因。我无法使用 XMLhttprequest 发送 JSON 对象,所以我尝试在集成请求中使用映射模板。但对我来说没有什么是容易的哈哈
  • 在你的处理程序中放一个console.log(JSON.stringify(event, null, 2)),再次发出请求,看看事件对象里面有什么。
  • 哦,它有效!谢谢,汤姆梅洛。我的错误是一件非常愚蠢的事情。
猜你喜欢
  • 2018-09-26
  • 2020-12-29
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
  • 2017-12-29
  • 2015-12-13
相关资源
最近更新 更多