Я получаю 404 в конечных точках облака Google на движке приложения

В моем приложении app.yaml (соответствующая часть) выглядит так:

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

- url: /logs
  script: logviewer.main.app

- url: /static
  static_dir: static

- url: /(.*\.html)
  static_files: pages/\1
  upload: pages/(.*\.html)

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

- url: .*
  script: main.app

Я включил все обработчики, просто чтобы убедиться, но я совершенно уверен, что проблема не в app.yml.

Соответствующая часть api.py

@endpoints.api(name='quizservice',version='v01',
               description='api backand for quickbuzzer')
class QuizService(remote.Service):


  @endpoints.method(messages.VoidMessage , messages.CreateQuizResponse, name="createQuiz")
  def createQuiz(self, request):
    . . .

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

Теперь, когда я захожу в проводник и пытаюсь запустить метод QuiizService.createQuiz, я получаю ответ 404.

Глядя в логи, я вижу это:

INFO     2013-04-29 17:53:15,560 server.py:561] default: "GET /_ah/api/discovery/v1/apis/quizservice/v01/rest HTTP/1.1" 200 2738
INFO     2013-04-29 17:53:22,118 server.py:561] default: "POST /_ah/spi/BackendService.getApiConfigs HTTP/1.1" 200 1585
WARNING  2013-04-29 17:53:22,119 api_config_manager.py:201] No endpoint found for path: quizservice/v01
INFO     2013-04-29 17:53:22,119 server.py:561] default: "POST /_ah/api/quizservice/v01 HTTP/1.1" 404 9

person bigblind    schedule 29.04.2013    source источник
comment
Разве это не должно быть - url: /.*? Я всегда так писал.   -  person Joachim Isaksson    schedule 29.04.2013
comment
Моя версия работает, но это не должно влиять на мой обработчик конечных точек в облаке.   -  person bigblind    schedule 29.04.2013


Ответы (2)


Мне удалось решить проблему, указав параметр path декоратору endpoints.method. Теперь мне интересно, может ли API конечных точек выбрать путь по умолчанию на основе имени моего метода.

person bigblind    schedule 29.04.2013

Другой случай, когда эта ошибка может быть вызвана неправильным порядком объявления обработчиков URL. См. https://stackoverflow.com/a/15675839/362953.

- url: .*
  script: main.app

Должен прийти в конце, а не раньше

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

В этом случае OP порядок правильный.

person user362953    schedule 08.03.2017
comment
Может ли это также быть связано с Endpoint Frameworks? Кажется, я начал получать это только после обновления некоторое время назад. Мой конкретный вариант использования включает модульное тестирование (я знаю, что это интеграционный тест). - person Tom Russell; 15.12.2017