我在AWS API Gateway中定义了一个使用Lambda集成的终端节点。 Lambda函数期望查询字符串参数在传递给它的event
对象中可用。
我的API位于example.execute-api.us-east-1.amazonaws.com/dev/my-resource
,我有查询字符串参数,例如foo=test
。
因此完整的终结点应该是
example.execute-api.us-east-1.amazonaws.com/dev/my-resource?foo=test
我可以在浏览器中访问此终结点,或在邮递员中请求它,并获得预期的响应,因此我知道API网关已正确配置。但是,当我使用Javascript SDK时,似乎无法传递查询字符串参数。
根据this page from the docs的最后一部分,我应该能够传入一个将被解释为查询字符串参数的JSON对象,如下所示:
var apiClient = apigClientFactory.newClient();
var requestParams = {"foo": "test"};
apiClient.myResourceGet(requestParams).then(function(result) {
// Do something with the response
});
但是,在我的情况下,requestParams
似乎被忽略了。在Lambda函数中,event
有一个空白的queryStringParameters
字段。 如何将在requestParams
对象中定义的键/值作为查询字符串参数传递给此端点?
答案 0 :(得分:0)
由于您的下一个端点传递了查询参数,因此您实际上不需要json objet
example.execute-api.us-east-1.amazonaws.com/dev/my-resource?foo=test
创建变量
var test = <assign value>
现在
var params = {
host: "execute-api.us-east-1.amazonaws.com",
path: "/dev/my-resource?foo="+test
};
示例:
var https = require('https');
exports.handler = (event, context, callback) => {
var params = {
host: "bittrex.com",
path: "/api/v1.1/public/getmarketsummaries"
};
var req = https.request(params, function(res) {
let data = '';
console.log('STATUS: ' + res.statusCode);
res.setEncoding('utf8');
res.on('data', function(chunk) {
data += chunk;
});
res.on('end', function() {
console.log("DONE");
console.log(JSON.parse(data));
});
});
req.end();
};