我正在开发一个包含多个模块的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 回答
好的,我发现的唯一答案是本地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肯定不适合 生产环境 .