0

ローカルの App Engine を使用しており、エンドポイントが動作していますが、次の API を追加すると、API Explorer ( https://developers.google.com/apis-explorer/?base=http://localhost: 8888/_ah/api#p/ ) は、JavaScript コンソールに未処理の例外がある間は読み込まれません。

@ApiMethod(name = "getClientByPublicId")
public Client getClientByPublicId(@Named("publicId") String publicId) {
    EntityManager mgr = getEntityManager();
    Client client = null;
    client = mgr.find(Client.class, publicId);
    mgr.close();

    return client;
}

Chrome JavaScript コンソール内では、最小化されているため、何も役に立ちません。

Uncaught java.lang.NullPointerException
(anonymous function)
(anonymous function)
h
(anonymous function)
F.(anonymous function).z.(anonymous function).z.(anonymous function)
_.T.K.__cb
h
c

API Explorer ページ全体が空白になります。

これをデバッグ モードで実行し、追加した API 内にブレークポイントを設定しましたが、トリガーされません。

で検出ドキュメントをロードするhttp://localhost:8888/_ah/api/discovery/v1/apis/clientendpoint/v1/restと、次の応答で失敗します。

{
  "error" : {
    "message" : ""
  }
}

この新しい API を削除すると、新しい API がなくてもすべて正常に動作します。

誰がこれを引き起こしているのか知っていますか?

アップデート

Google APIs Explorer がアプリ エンジン アプリから利用可能な ApiMethod を見つけられなかったことに遭遇しました。パスの衝突が発生しているように思えますが、まだ理解していませんが、今このアイデアに取り組もうとしています。 .

これが問題である可能性がある場合、関連する API は次のとおりです。

@ApiMethod(name = "getClient")
public Client getClient(@Named("id") Long id) {
    EntityManager mgr = getEntityManager();
    Client client = null;
    try {
        client = mgr.find(Client.class, id);
    } finally {
        mgr.close();
    }
    return client;
}

誰かが違うことを知らない限り、私はこれを試して私の質問に答えます。

4

1 に答える 1

0

Google APIs Explorer が、アプリ エンジン アプリから利用可能な ApiMethod を見つけられなかったことがわかった後、新しいパスを含める必要があることを知りました。

たとえば、ApiMethodを次のように変更できました。

@ApiMethod(
    name = "getClientByPublicId",
    path = "client/publicId/{publicId}",
    httpMethod = "GET"
)

今はうまくいきます。

于 2013-06-07T01:21:41.690 に答える