适用于JavaScript的Google API客户端库 - 404方法调用

时间:2014-04-08 09:37:13

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

从今天早上起,我使用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"}]

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

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

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

我已向Google报告此错误。

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

由于

2 个答案:

答案 0 :(得分:6)

目前,JS Client库似乎是一个普遍问题,不仅限于Endpoints API,还会影响所有Google API。

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

只有真实的"解决问题"不依赖于JS Client Library(过去也存在稳定性问题)并自己构建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); 
});

编辑:从链接问题更新

他们将回滚破损的更新,这将需要几个小时才能完成(尚未确切的ETA)。

作为"快速"修复你可以明确地为每个请求添加apiVersion(注意:回滚后B可能会改变,但现在可以正常工作):

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

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

答案 1 :(得分:0)

可以通过传递发现文档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(()=> {您的诺言返回回调函数})