-->

使用JavaScript的gapi.client执行我的自定义谷歌API(Use gapi.clie

2019-10-18 12:34发布

我有一个成功部署到谷歌端点一个服务,它是通过浏览器访问。

现在我试图加载谷歌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) {...});

Answer 1:

问题是在调用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(服务)类,你可以用它来直接调用方法。



文章来源: Use gapi.client javascript to execute my custom Google API