我正在开发一个包含多个模块的 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);
}
最佳答案
好的,这里描述了我找到的唯一答案,它可以作为本地 GAE 中非默认模块的解决方法:https://code.google.com/p/google-api-javascript-client/issues/detail?id=147
- 打开localhost:8090/_ah/api/discovery/v1/apis/adminapi/v1/rest
- 下载 JSON
- 更新列表 baseUrl 和 rootUrl 以包含正确的端口(在我的例子中是 8090)
- 在客户端的 gapi.client.load 函数中传递更新的 JSON 而不是 API 的名称
备选方案:
添加到 @Api 注解的 Java 类:
root = "http://localhost:8090/_ah/api
",
backendRoot = "http://localhost:8090/_ah/spi
",
这两种方法中的唯一时刻:我不应该提交这些更改,因为这些 URL 肯定不适合生产。
关于javascript - 如何在本地 Google App Engine 的非默认模块上访问 Google Cloud Endpoints?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27575538/