【问题标题】:Google APIs Client Library for JavaScript - 404 on method call适用于 JavaScript 的 Google API 客户端库 - 方法调用时出现 404
【发布时间】:2014-04-08 09:37:12
【问题描述】:

从今天早上开始,我所有使用 gapi 的应用程序都关闭了。

我正在使用: https://apis.google.com/js/client.js

与我的 Google Appengine 应用程序的端点通信,例如:

gapi.client.load('public', 'v2', function(){
    gapi.client.public.organizations().execute(function(response){ 
        console.log(response); 
    }); 
}, 'https://XXX.appspot.com/_ah/api');

截至今天,所有呼叫都以以下错误消息响应:

[{"error":{"code":404,"message":"Not Found","data":[{"domain":"global","reason":"notFound","message":"Not Found"}]},"id":"gapiRpc"}]

我的应用程序没有记录任何错误。 我可以毫无错误地访问端点 API 资源管理器 (/_ah/api/explorer)。 我可以毫无错误地进行 HTTP 请求调用,例如

https://XXX.appspot.com/_ah/api/public/v2/organizations

“gapi”对象加载时没有错误。我的“公共”端点也已加载,我可以使用 javascript 控制台列出所有方法。

我已将此错误报告给 Google。

还有其他人有这个问题吗?有没有人有任何快速的解决方案或解决方法?我是否错过了一些 Google 更新或 API 更改?

谢谢

【问题讨论】:

  • 对我来说同样的问题。并且 Google appengine 仪表板没有报告任何问题
  • Google 已确认存在问题。您可以在此处关注问题 - groups.google.com/forum/#!topic/… 如果您还没有订阅 Google App Engine 停机通知组,我建议大家订阅 - groups.google.com/forum/#!forum/…
  • 问题似乎已解决。我的应用程序再次备份!来自 Google 支持:“Google API JavaScript 客户端功能已为部分用户恢复,我们希望在不久的将来为所有用户提供解决方案。请注意,此时间范围是估计值,可能会发生变化。”

标签: javascript api google-app-engine google-cloud-endpoints client-library


【解决方案1】:

这似乎是目前 JS 客户端库的普遍问题,不仅限于 Endpoints API,而是影响所有 Google API。

https://code.google.com/p/google-api-javascript-client/issues/detail?id=136

唯一真正的“解决方法”是不依赖于 JS 客户端库(过去也存在稳定性问题)并自己构建 HTTP 请求,我知道这不是一个快速的解决方案。

您也可以尝试使用gapi.client.request 方法处理直接 REST 请求,这似乎适用于我的端点 API 之一。 (同样,这不是一个快速的解决方案,但可能更好/更容易,因为您仍然可以通过客户端库进行身份验证)。

gapi.client.request({
  "path": "/public/v2/organizations",
  "root": "https://XXX.appspot.com/_ah/api"
}).execute(function (response) { 
  console.log(response); 
});

编辑:从链接问题更新

他们将回滚需要几个小时才能完成的损坏更新(尚无确切的预计到达时间)。

作为“快速”修复,您可以明确地将 apiVersion 添加到每个请求(注意:B 在回滚后可能会更改,但现在可以使用):

var request = gapi.client.public.organizations();
request.B.apiVersion = "v2";
request.execute(function (response) {
  console.log(response);
});

编辑 2:现在一切似乎都恢复正常了。

【讨论】:

  • 没错,我认为我必须编写自己的请求包装器以避免将来出现错误。我正处于制作的早期阶段,所以它没有太多需要重写。感谢有关“gapi.client.request”的提示,这可能很有用。
【解决方案2】:

另一种解决方法可以通过传递发现文档 url 来完成。 示例发现文档 url 是

示例:-

window.gapi.client.load("http://localhost:8080/_ah/api/discovery/v1/apis/[endpoint-api-name]/v1/rest").then(() => { 你的承诺返回回调函数 })

window.gapi.client.load("http://[application-id].appspot.com/_ah/api/discovery/v1/apis/[endpoint-api-name]/v1/rest").then(() => {你的承诺返回回调函数})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 2014-02-02
    相关资源
    最近更新 更多