如何在本地Google App Engine的非默认模块上访问Google Cloud Endpoints?

时间:2014-12-19 23:52:28

标签: javascript google-app-engine google-cloud-endpoints

我正在开发一个包含多个模块的Google App Engine应用。后端API使用Google Cloud Endpoints。当我在本地运行GAE服务器时,即使我在加载客户端后从我的管理模块(localhost:9090)加载API,它也会尝试调用默认模块端口(localhost:8080)。在远程GAE实例上一切正常。可能是什么原因或解决方法?

代码是:

function init() {
  var loadCallback = function () {
    gapi.client.adminapi.mymethod(12345).then(alert(Woohoo!));
  };

  var apiRoot = '//' + window.location.host + '/_ah/api';
  gapi.client.load('adminapi', 'v1', loadCallback, apiRoot);
}

1 个答案:

答案 0 :(得分:2)

好的,我发现的唯一答案是本地GAE中非默认模块的解决方法:https://code.google.com/p/google-api-javascript-client/issues/detail?id=147

  1. 打开localhost:8090 / _ah / api / discovery / v1 / apis / adminapi / v1 / rest
  2. 下载JSON
  3. 更新列出baseUrl和rootUrl以包含正确的端口(在我的情况下为8090)
  4. 在客户端上的gapi.client.load函数中传递更新的JSON而不是API的名称
  5. 替代: 添加到@Api带注释的Java类:     root =" http://localhost:8090/_ah/api",     backendRoot =" http://localhost:8090/_ah/spi",

    这两种方法中唯一的时刻:我不应该提交这些更改,因为这些网址肯定不适合生产。