20

GAE プロジェクトでクラウド エンドポイントの使用を開始していますが、API がサーバーで更新されないという問題が発生しています。

  • localhost:8888/_ah/api/explorer は問題ありません。

しかし、デプロイしても何も変わりません。

  • myapp.appspot.com:8888/_ah/api/explorer が悪い

さらに調査すると、URL エンドポイントの更新の例が示されます: https://myapp.appspot.com/_ah/api/myapp/v1/foo/list

しかし、読み込まれたクライアント API はまだ正しくありません。例: gapi.client.load('myapp', 'v1', callback, url); gapi.client.myapp.foo.list();

呼び出しを foo/list から foo/list2 に変更すると、残りの URL は更新されますが、api パッケージは更新されません。

4

6 に答える 6

22

人々が遭遇する可能性のある2つのケースをカバーしようとします:

クライアント側:

Google API Explorer Web アプリは積極的にキャッシュするため、API サーバー側を更新してクライアントの変更を確認する場合は、キャッシュをクリアするか、強制的に更新する必要があります。

サーバー側 (デプロイされた本番用 App Engine アプリ内):

デプロイに問題がある場合は、デバッグ時に次の 2 つの場所を確認してください。

  • デプロイ後に管理ログ ( https://appengine.google.com/adminlogs?&app_id=s~YOUR-APP-ID ) を確認してください。アプリケーション コードが正常にデプロイされると、次のメッセージが表示されます。

    Completed update of a new default version
    

    その後すぐに、次のように表示されます。

    Successfully updated API configuration
    

    このメッセージが API 構成の更新に失敗したことを示している場合は、再度デプロイする必要があります。上記のエラーが続く場合は、バグを報告する必要があります。API 構成に関するメッセージが表示されない場合は、パス/_ah/spi/.*がルーティング構成 ( app.yamlPython の場合web.xml、Java の場合) で明示的に指定されていることを確認する必要があります。

  • デプロイ後にアプリケーション ログ ( https://appengine.google.com/logs?&app_id=s~YOUR-APP-ID ) を確認します。デプロイが完了すると、Google の API インフラストラクチャが/_ah/spi/BackendService.getApiConfigsアプリケーションにリクエストを送信して、API 構成 (JSON として) を Google の API インフラストラクチャに登録し、すべての検出関連の構成を作成できるようにします。このリクエストが 200 で完了しない場合、Google の API インフラストラクチャには登録するものが何もないため、API の変更は表示されません。

  • 302へのリクエストのリダイレクトを一貫して取得している場合は、API ルートでプロトコルとして/_ah/spi/BackendService.getApiConfigs使用する「bns アダプター」をユーザー (または生成された API 構成) が指定しているためですが、 (Java) または(Python) が必要です。そのパスは安全です。これにより、プロトコルとして使用するリクエストが、プロトコルと同じページに( を使用して) リダイレクトされます。これは、Experimental に進む前に Trusted Tester フォーラムで議論されました。http:web.xmlapp.yaml/_ah/spihttp:302https:

于 2013-02-25T01:28:03.460 に答える
2

これが私に起こったことです。

localhost でエンドポイントをテストしたところ、問題なく動作しました。

エンドポイントを appspot にデプロイしました。エンドポイントにリクエストを送信すると、ブラウザで「見つかりません」というメッセージが表示されました。

ログを調べたところ、エンドポイントにリクエストを送信したときに、favicon ファイルに 404 http エラー コードが表示されていました。そして事実上、そのファイルをデプロイに入れるのを忘れていました。

そこで、favicon ファイルを使用して戦争を再展開すると、404 http コードが消え、appspot でもエンドポイントが正常に機能しました。

ばかげているように聞こえるかもしれませんが、これは私が経験したことです。(下手な英語で申し訳ありません)

于 2013-06-17T10:59:26.510 に答える
1

web.xml に以下を含めずにアプリを初めてアップロードすると、次のようになることに気付きました。

 <security-constraint>
        <web-resource-collection>
            <url-pattern>/_ah/spi/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

次に、bns アダプターは http として設定されます。後で上記を追加すると、/_ah/spi/BackendService.getApiConfigs で 302 http コードが取得され、エンドポイントが更新されません。

そのため、/_ah/spi で https を使用しないように戻し、エンドポイントを更新しています。エンドポイントが更新されていないことに気付いた人は、/_ah/spi/ の ssl 用に持っていた最初の構成に戻っていると思います。

ヨー。

于 2013-03-06T11:45:56.027 に答える
0

また、新しいバージョンをデプロイした後、古い API 検出ドキュメントを取得していました。GAE が新しいバージョンの提供を開始するのに数分かかりました。

于 2013-08-31T15:35:48.847 に答える
0

この URL を使用して API を呼び出していたときに、同じエラーNot Found (404 エラー コード) が発生しました。

https://MY_APP_ID.appspot.com/_ah/api/MY_SERVICE/v1/ユーザー

すべてを試し、最終的にWEB-INFから検出ファイルを削除して修正し、 MY_SERVICE-v1.apiのみを保持してからAPI を再デプロイしました。今はうまくいきます。

于 2013-08-08T17:22:44.420 に答える