0

文档说明您应该像这样从 javascript 加载您的 api :

var ROOT = 'https://your_app_id.appspot.com/_ah/api';
gapi.client.load('your_app_id', 'v1', function() {
    doSomethingAfterLoading();
}, ROOT);

但是,它看起来实际上是

var ROOT = 'https://your_app_id.appspot.com/_ah/api';
gapi.client.load('your_api_name', 'v1', function() {
    doSomethingAfterLoading();
}, ROOT);

例如,我可以将“用户”作为 api 名称传递,现在users对象被定义为gapi.client.

为了清楚起见,我的 api 是这样定义的:

@endpoints.api(name='users',version='v1',
               description='The user service.')
class UserService(remote.Service):
    ...

所以现在,我想知道,我是不是在以一种意想不到的方式做某事?而且,既然/_ah/api/explorer可以找到所有定义的 API,有没有办法让这个函数添加我定义的所有 API,而不必在单独的gapi.client.load调用中指定它们的所有名称?

4

1 回答 1

1

感谢您指出,这是文档中的错误!我们会尽快修复。

您应该查看完整的井字游戏示例应用程序

在其中,我们展示了如何加载多个 API(以及其他内容)。

google.devrel.samples.ttt.init = function(apiRoot) {
  // Loads the OAuth and Tic Tac Toe APIs asynchronously, and triggers login
  // when they have completed.
  var apisToLoad;
  var callback = function() {
    if (--apisToLoad == 0) {
      google.devrel.samples.ttt.signin(true,
          google.devrel.samples.ttt.userAuthed);
    }
  }

  apisToLoad = 2; // must match number of calls to gapi.client.load()
  gapi.client.load('tictactoe', 'v1', callback, apiRoot);
  gapi.client.load('oauth2', 'v2', callback);

  var buttons = document.querySelectorAll('td');
  for (var i = 0; i < buttons.length; i++) {
    var button = buttons[i];
    button.addEventListener('click', google.devrel.samples.ttt.clickSquare);
  }

  var reset = document.querySelector('#restartButton');
  reset.addEventListener('click', google.devrel.samples.ttt.resetGame);
};
于 2013-05-22T18:49:05.220 回答