4

私は 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にアクセスしようとすると、

見つかりません

また、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 にアクセスしようとすると、

{"エラー": {"メッセージ": "BackendService.getApiConfigs エラー"}}

「見つかりません」の代わりに。https://developers.google.com/apis-explorer/?base=http://localhost:8080/_ah/api#p/で Explorer にアクセスすると、JavaScript コンソールでも 404 ではなく 500 エラーが表示されるようになりました。

Google 検索を何度も行ったり、いろいろ試したりして、この問題を解決しようとしてきましたが、これ以上先に進むことができないようです。この専門家のコミュニティから得ることができるあらゆる助けに非常に感謝しています.

ありがとう。

4

3 に答える 3

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"

: URL/_ah/spi/.*/_ah/api/.*. 変更すると、 で API にアクセスできます/_ah/api/explorer

于 2013-03-28T13:31:06.680 に答える
2
- url: .*
  script: main.app

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

これらのハンドラの順序を逆にしてみてください。通常、最も一般的な URL マッチャーを常にリストの最後に配置することをお勧めします。より具体的なハンドラーに送られることを意図したものをキャッチしないようにするためです。

于 2013-03-28T06:48:21.450 に答える
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
于 2016-05-06T07:19:15.460 に答える