17

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

据我了解,SDK 中包含某种 API Explorer,它应该让我测试/验证我的 API——文档说:“通过导航到http://localhost:8080/_ah/api/explorer”在 Google APIs Explorer 中测试 API 后端。但我找不到任何关于 API Explorer 实际是什么、做什么或看起来像什么的文档。

无论如何,当我尝试点击该 URL 时,我会立即被重定向到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

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

4

11 回答 11

8

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

这是来自谷歌的信息链接

但对我来说,它仍然没有修复使用 api explorer 和 localhost dev 服务器。
我发现一种可能的解决方法是
在终端中的 MacO 上使用“--allow-running-insecure-content”标志启动 Chrome,运行以下命令:

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

于 2016-02-08T12:12:38.117 回答
7

如果您使用的是 Chrome 浏览器,只需将 URL 中的 https 设置为 http。它对我有用。

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

于 2013-10-28T07:13:47.477 回答
4

API Explorer 的 URL 是正确的,但存在一些问题(显然不是全部解决),API Explorer 没有正确列出您的 API。

与https://developers.google.com/apis-explorer/的外观相比,它是 Google API 的 API Explorer,比您通常自己托管的 API 多得多,但只是为了让您了解您的应该会看到:单击后每个 API 的 API 列表和详细信息。

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

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

于 2013-07-17T17:46:20.770 回答
4

我在 chrome 中尝试了上述所有方法,但对我来说没有任何效果,但是使用 firefox 我只需单击 url 栏左侧的锁并禁用安全性。这对我来说是个窍门,干杯!:D

于 2016-04-04T01:00:02.090 回答
3

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

ps; 记得用你的端口号编辑 8080

于 2016-08-19T08:20:04.097 回答
2

我也是 GAE 端点的新手,我遇到了同样的问题。就我而言,由于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
于 2014-11-27T23:02:57.300 回答
2

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

单击 Chrome 地址栏中的盾牌图标为我做到了。

于 2015-06-10T23:15:07.160 回答
1

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

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

于 2014-06-07T12:50:54.250 回答
0

对我来说,这是 app.yaml 中的一个非常简单的错字。如果你也有同样的问题,可以这么简单:

而不是(这是正确的):

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

我放:

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

api改回spi就可以了。

于 2014-01-14T05:58:19.560 回答
0

问题是您的 python 文件找不到以下内容的导入:

from protorpc import remote

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

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/
于 2015-02-26T23:41:33.983 回答
0

我遇到了同样的问题,但事实证明我在 localhost 上指定了错误的端口。当开发服务器启动时,日志会在 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] 启动模块“默认”运行在: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 中的盾牌并允许不安全的脚本,因为 url 未加密)

于 2015-07-26T03:58:50.393 回答