如何从AWS Api Gateway获取根路径“/”资源?

时间:2015-11-19 03:01:36

标签: node.js automation aws-sdk aws-api-gateway

我一直在尝试使用Nodejs AWS SDK从AWS Api Gateway检索具有路径“/”(根)的资源。我知道天真的解决办法就是这样做:

var AWS = require('aws-sdk');
var __ = require('lodash');
var Promise = require('bluebird');

var resources = [];
var apiGateway = Promise.promisifyAll(new AWS.APIGateway({apiVersion: '2015-07-09', region: 'us-west-2'}));

var _finishRetrievingResources = function (resources) {
  var orderedResources = __.sortBy(resources, function (res) {
    return res.path.split('/').length;
  });
  var firstResource = orderedResources[0];
};

var _retrieveNextPage = function (resp) {
  resources = resources.concat(resp.data.items);
  if (resp.hasNextPage()) {
    resp.nextPage().on('success', _retrieveNextPage).send();
  } else {
    _finishRetrievingResources(resources);
  }
};

var foo = apiGateway.getResources({restApiId: 'mah_rest_api_id'}).on('success', _retrieveNextPage).send();

但是,是否有人知道另一种方法?我更愿意知道,我最多只能打一次电话,而不是做多次。

PS:我知道可以进行多项优化(例如,检查每个响应的根路径),我真的想知道是否有一个SDK调用可以解决这个问题。

1 个答案:

答案 0 :(得分:3)

没有一个电话,但如果您的资源少于500个,则可以。作为安慰奖,这是最好的做法,如果有超过500个资源,使用position来防止意外错过。如果资源少于500个,这将适用于一个呼叫:

https://github.com/andrew-templeton/cfn-api-gateway-restapi/blob/bd964408bcb4bc6fc8ec91b5e1f0387c8f11691a/index.js#L77-L102