【问题标题】:AppEngine Google Cloud Endpoint - discovery not foundAppEngine Google Cloud Endpoint - 未找到发现
【发布时间】:2016-05-06 15:19:15
【问题描述】:

我对 Python 和 Google AppEngine 还很陌生,但有大约 7 年的编程经验。我也是 StackOverflow 的新手。

我一直在尝试为我的个人项目设置一个简单的 Google Cloud Endpoint API,并且已经完成并将完成的应用上传到 Google App Engine。

这是我的 Endpoint API 设置:

@endpoints.api(name='puzzle', version='v1', description='Puzzle Engine API')

和方法:

@endpoints.method(
        PuzzleMessage, PuzzleMessage,
        name='puzzle.generate',
        http_method='GET',
        path='generate'
    )

@endpoints.method(
        PuzzleMessage, PuzzleMessage,
        name='puzzle.solve',
        http_method='GET',
        path='solve'
    )

我的 app.yaml 看起来像:

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: main.app

# Endpoints handler
- url: /_ah/api/.*
  script: services.application

libraries:
- name: webapp2
  version: "2.5.2"

最后 services.py 显示:

from google.appengine.ext import endpoints
from api import puzzle_api

application = endpoints.api_server([
                               puzzle_api.PuzzleAPI
                           ], restricted=False)

现在,问题是当我尝试访问 https://my-app-name.appspot.com/_ah/api/discovery/v1/apis 时,我看到的只是

找不到

此外,当我在https://developers.google.com/apis-explorer/?base=https://my-app-name.appspot.com/_ah/api#p/ 访问 API Explorer 时,服务列表为空,并且在 JavaScript 中控制台,我在 https://my-app-name.appspot.com/_ah/api/discovery/v1/apis 上看到 404 错误。

在本地测试服务器上点击这些 URL 会产生完全不同的错误。当我尝试在 localhost:8080/_ah/api/discovery/v1/apis 访问本地测试服务器上的 API Discovery 时,我得到了

{"error": {"message": "BackendService.getApiConfigs 错误"}}

而不是“未找到”。现在,在 https://developers.google.com/apis-explorer/?base=http://localhost:8080/_ah/api#p/ 上点击 Explorer 将在 JavaScript 控制台中显示 500 错误而不是 404。

我一直在尝试通过进行许多 Google 搜索并尝试许多事情来解决此问题,但我似乎无法继续进行下去。我非常感谢我能从这个专业社区获得任何帮助。

谢谢。

【问题讨论】:

  • 如果您有新信息要添加,您可以(并且应该!)编辑您的问题。它会让你的问题更清楚,并吸引那些可能回答它的人的注意力。
  • 谢谢@MartinAtkins。我会这样做的。
  • 不幸的是,1.7.6 SDK 也存在问题;请参阅stackoverflow.com/questions/15666157 了解更多信息。尝试颠倒app.yaml 中处理程序的顺序并使用 1.7.5 SDK。

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


【解决方案1】:

在此处查看文档:https://developers.google.com/appengine/docs/python/endpoints/api_server

您需要执行以下操作:

将您的 app.yaml 更改为:

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

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

- url: .*
  script: main.app

libraries:
- name: webapp2
  version: "2.5.2"

注意:网址应为/_ah/spi/.* 而不是/_ah/api/.*。更改它,然后您可以通过/_ah/api/explorer访问您的api。

【讨论】:

  • 在新的 v2 版本中不需要设置 /_ah/spi/.*,对吧?我们如何在新版本中做到这一点?
【解决方案2】:
- url: .*
  script: main.app

# Endpoints handler
- url: /_ah/api/.*
  script: services.application

尝试颠倒这些处理程序的顺序。通常将最通用的 URL 匹配器放在列表末尾是一种很好的做法,以免它们捕捉到本应转到更具体的处理程序的东西。

【讨论】:

  • 谢谢。我只是在阅读您的答案后尝试过,但不幸的是这并没有解决我的问题。
【解决方案3】:

更改为 app.yaml

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

libraries:
- name: webapp2
  version: latest 
- name: pycrypto
  version: latest
- name: endpoints
  version: 1.0

【讨论】:

    猜你喜欢
    • 2014-10-08
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 2022-11-11
    相关资源
    最近更新 更多