AppEngine Google Cloud Endpoint - 未找到发现

时间:2013-03-28 06:30:53

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

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

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

以下是我的端点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时,我看到的只是< / p>

  

未找到

此外,当我在https://developers.google.com/apis-explorer/?base=https:// my-app-name .appspot.com / _ah / api #p /上点击API资源管理器时,服务列表为空,并且在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 Error”}}

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

我一直试图通过做很多谷歌搜索并尝试很多东西来解决这个问题,但我似乎无法继续下去。我非常感谢能从这个专业人士社区获得的任何帮助。

感谢。

3 个答案:

答案 0 :(得分:9)

请参阅此处的文档: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。

答案 1 :(得分:2)

- url: .*
  script: main.app

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

尝试颠倒这些处理程序的顺序。通常最好的做法是始终将最常用的URL匹配器放在列表的末尾,以免它们捕获一些意图转到更具体的处理程序。

答案 2 :(得分:1)

转换为 app.yaml

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

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