如何使用Javascript SDK将查询字符串参数传递给AWS API Gateway客户端?

时间:2019-04-13 01:35:40

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

我在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对象中定义的键/值作为查询字符串参数传递给此端点?

1 个答案:

答案 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();
 };