我有一个成功部署到谷歌端点一个服务,它是通过浏览器访问。
现在我试图加载谷歌API JavaScript客户端库来使用javascript调用我的服务。
据我所知,我应该这样做
gapi.client.load([MY_APP_NAME], 'v1', function() {
var request = gapi.client.[API_NAME].[SERVICE_NAME].[METHOD]();
request.execute(function(jsonResp, rawResp) {...});
);
但是,我一直在运行时抱怨gapi.client得到一个异常。[MY_API_NAME]是不确定的。 我做同样的事情与任何谷歌API(如加号),它工作正常。 例如,如果我打开“加” API,我将有机会获得gapi.client.plus ...我可以调用的方法。
我缺少的东西吗? 所有样品和文件都是关于谷歌服务API,我无法找到定制API的样本(即开发人员编写的)。
我甚至尝试gapi.client.request不同的路径(绝对路径和相对路径),但我得到404 - 在“状态” Not Found错误。
var request = gapi.client.request({'path':
'https://[APP_NAME].appspot.com/_ah/api/[SERVICE_NAME]/v1/[METHOD]'
, 'method': 'GET'});
request.execute(function(jsonResp, rawResp) {...});
var request = gapi.client.request({
'path':'/[SERVICE_NAME]/v1/[METHOD]',
'method': 'GET'});
request.execute(function(jsonResp, rawResp) {...});
问题是在调用gapi.client.load缺少参数()。
我看着gapi.client.load的定义,在这个环节https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiclientload
gapi.client.load(name, version, callback)
然后后来我发现不是完全正确的和一个可选的参数丢失(app_api_root_url)。
gapi.client.load(name, version, callback, app_api_root_url)
如果app_api_root_url丢失,客户端加载只有谷歌服务API(app_api_root_url如https://myapp.appspot.com/_ah/api )
你可以找到关于如何在此链接正确使用gapi.client.load()的更多细节https://developers.google.com/appengine/docs/java/endpoints/consume_js
正如你可以在下面的代码段看,我没有ROOT参数时,我打电话gapi.client.load,这就是为什么谷歌在默认情况下是看着自己的服务API,显然找不到我的API。
var ROOT = 'https://your_app_id.appspot.com/_ah/api';
gapi.client.load('your_api_name', 'v1', function() {
var request = gapi.client.your_api_name.your_method_name();
request.execute(function(jsonResp, rawResp) {
//do the rest of what you need to do
});
}, ROOT);
注:YOUR_APP_ID在ROOT参数仅用于加载客户端脚本。 装载完成后, 您将有那是你的API的名字命名 ,而不是你的应用的对象 。 这个对象就是喜欢你的Java(服务)类,你可以用它来直接调用方法。