无法访问localhost上的API资源管理器

时间:2013-07-17 17:32:51

标签: google-app-engine google-cloud-endpoints

我正在尝试构建一个Endpoints应用程序,但我是Google App Engine的新手。

根据我的理解,SDK中包含某种API Explorer,可以让我测试/验证我的API - 文档说:"在Google API Explorer中测试API后端导航到http://localhost:8080/_ah/api/explorer"。但我无法找到API Explorer实际上是,做什么或看起来像什么的任何文档。

在任何情况下,当我尝试点击该网址时,我会立即重定向到https://developers.google.com/apis-explorer/?base=http://localhost:8080/_ah/api#p/,这告诉我一切都没有用,而且似乎必定是某种错误。

devappserver日志说:

INFO     2013-07-17 17:27:54,574 server.py:593] default: "GET /_ah/api/explorer HTTP/1.1" 302 -
INFO     2013-07-17 17:27:56,099 server.py:593] default: "GET /_ah/api/static/proxy.html?jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.7JUwNUXMAS8.O%2Fm%3D__features__%2Fam%3DEQ%2Frt%3Dj%2Fd%3D1%2Frs%3DAItRSTO0dpKS_pssf5r3z87E6FlFvDGdOg HTTP/1.1" 200 1933
INFO     2013-07-17 17:27:56,193 server.py:593] default: "POST /_ah/spi/BackendService.getApiConfigs HTTP/1.1" 200 2342
INFO     2013-07-17 17:27:56,492 server.py:593] default: "GET /_ah/api/discovery/v1/apis HTTP/1.1" 200 576
INFO     2013-07-17 17:27:56,507 server.py:593] default: "POST /_ah/spi/BackendService.getApiConfigs HTTP/1.1" 200 2342
INFO     2013-07-17 17:27:56,583 server.py:593] default: "POST /_ah/spi/BackendService.getApiConfigs HTTP/1.1" 200 2342
INFO     2013-07-17 17:27:56,811 server.py:593] default: "GET /_ah/api/discovery/v1/apis HTTP/1.1" 200 576
INFO     2013-07-17 17:27:56,886 server.py:593] default: "GET /_ah/api/discovery/v1/apis/scrnxSync/v1/rest HTTP/1.1" 200 3365

任何值得的东西。

这是我的app.yaml:

application: scrnx-cloud-1
version: 1
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /admin/.*
  script: admin.application
  login: admin
  secure: always

  # Endpoints handler
- url: /_ah/spi/.*
  script: sync_api.application

  # catchall - must come last    
- url: /.*
  script: default.application


admin_console:
  pages:
  - name: View Measurement
    url: /admin/measurement  


libraries:
- name: jinja2
  version: 2.6
- name: markupsafe
  version: 0.15

builtins:
- admin_redirect: off
- appstats: off
- deferred: off
- remote_api: on

我应该做些什么来设置它吗?

11 个答案:

答案 0 :(得分:8)

更改了一些内容,现在您必须以特定方式启动Chrome才能在localhost开发服务器上使用api explorer

这是来自谷歌的link信息。

但对我来说,它还没有修复使用api explorer和localhost dev服务器。
我发现可能的解决方法是使用标记" - allow-running-insecure-content"启动Chrome。 在终端的MacOs上运行:

  

/ Applications / Google \ Chrome.app/Contents/Mac/Google \ Chrome   --user-data-dir = test --allow-running-insecure-content

答案 1 :(得分:7)

如果您使用的是Chrome浏览器,只需在http中输入https即可。它对我有用。

http://apis-explorer.appspot.com/apis-explorer/?base=http://localhost:8080/_ah/api#p/

答案 2 :(得分:4)

API资源管理器的URL是正确的,但是在API资源管理器未正确列出您的API的情况下,存在一些问题(显然并非全部已解决)。

比较它应该是什么样的https://developers.google.com/apis-explorer/是用于Google API的API资源管理器,它比您通常自己托管的API要多得多,但只是为了让您了解应该看到的内容:单击每个API后的API和详细信息。

通常有效的解决方法是明确地将API的名称和版本添加到网址中,因此,由于您的API名为scrnxSync,版本为v1,因此此链接应显示您定义的方法对于您的API,并允许您调用这些方法:

https://developers.google.com/apis-explorer/?base=http://localhost:8080/_ah/api#p/scrnxSync/v1/

答案 3 :(得分:4)

我在chrome中尝试了以上所有内容并且对我没有任何作用,但是使用firefox我只需单击url栏左侧的锁并禁用安全性。这让我成了诀窍,干杯! :d

答案 4 :(得分:3)

快速修复: 在Firefox中打开链接:http://apis-explorer.appspot.com/apis-explorer/?base=http://localhost:8080/_ah/api#p/,然后单击导航栏上的安全连接图标,然后单击禁用保护。您应该能够看到您的API

PS;请记住使用您的端口号

编辑8080

答案 5 :(得分:2)

我也是GAE Endpoints的新手,我遇到了同样的问题。 在我的情况下,我有这个错误,因为app.yaml中的url处理程序的顺序。我有这样的话:

- url: /.*
  script: core_service.application

  # Endpoints handler
- url: /_ah/spi/.*
  script: api_service.application

正确的方法是首先定义最具体的路线,最后定义最一般的路线(/.*)。像这样:

  # Endpoints handler
- url: /_ah/spi/.*
  script: api_service.application

- url: /.*
  script: core_service.application

答案 6 :(得分:2)

我知道这不是完全相同的问题,但我收到消息“您正在探索通过HTTP而不是HTTPS描述或提供的API。这是不安全的,可能会被您的浏览器阻止。要解决此问题,为您的API设置TLS代理。或者,您可以告诉您的浏览器在此站点通过HTTP允许活动内容(在Chrome上,单击URL栏中的屏蔽),但这不会提高安全性或忽略此消息。

点击Chrome地址栏中的盾牌图标就可以了。

答案 7 :(得分:1)

如果您正在从GWT DevMode运行AppEngine,您需要更改base参数中的端口以匹配您在控制台中看到的内容,对于我来说,8888:

http://apis-explorer.appspot.com/apis-explorer/?base=http://localhost:8888/_ah/api#p/

答案 8 :(得分:0)

对我来说,这是app.yaml中一个非常简单的错字。如果您遇到同样的问题,可能就是这么简单:

而不是(这是正确的):

- url: /_ah/spi/.*
  script: services.application

我说:

- url: /_ah/api/.*
  script: services.application

api 更改回 spi 就可以了。

答案 9 :(得分:0)

问题是你的python文件找不到导入:

from protorpc import remote

因此,使用终端,跳过GUI,导航到appengine sdk目录并将项目放在那里。对于mac,它是:

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/

答案 10 :(得分:0)

我遇到了同样的问题,但事实证明我在localhost上指定了错误的端口。当dev服务器启动时,日志指定localhost上的三个离散端口:

  

INFO 2015-07-26 03:46:56,023 api_server.py:172]启动API服务器:http:// localhost:35714

     

INFO 2015-07-26 03:46:56,027 dispatcher.py:186]启动模块“default”运行于:http:// localhost:8080

     

INFO 2015-07-26 03:46:56,028 admin_server.py:118]启动管理服务器:http:// localhost:8000

问题在于我尝试将端口用于api服务器,但您只需将该端口用于默认模块。

这有效:http:// localhost:8080 / _ah / api / explorer(我需要点击chrome中的盾牌并允许不安全的脚本,因为网址未加密)