1

私は現在、Google-App-Engine ( https://www.udacity.com/course/ud859 )の udacity コースに取り組んでいます。プロファイルと会議があります。各プロファイルは会議に登録でき、プロファイル オブジェクトのリストに追加されます。

「getProfile」リクエスト (oAuth2.0 によって認証された現在アクティブなユーザーのユーザー データを取得する) の API エクスプローラーを見ると、「実行」をクリックするたびに異なる結果が得られます。

初めて実行をクリックすると、正しい応答が得られます。

正しい応答(開発者コンソールのデータストア クエリを使用してこれを検証しました):

200 OK

- Show headers -

{
 "displayName": "matjes993",
 "mainEmail": "matjes993@gmail.com",
 "teeShirtSize": "L",
 "conferenceKeysToAttend": [
  "ag9zfnVkYWNpdHk2MTNuZXdyMwsSB1Byb2ZpbGUiFTExMTAxNDEyMTM0NDI2MTgyNTQwOAwLEgpDb25mZXJlbmNlGJJODA",
  "ag9zfnVkYWNpdHk2MTNuZXdyNAsSB1Byb2ZpbGUiFTExMTAxNDEyMTM0NDI2MTgyNTQwOAwLEgpDb25mZXJlbmNlGLHqAQw"
 ],
 "userId": "111014121344261825408",
 "kind": "conference#resourcesItem",
 "etag": "\"E9X210UxHC5oxQ1CO9nNLV3Nj2U/3Ht-GWsemcXnzWP_cuR_xoRfQxM\""
}

しかし、もう一度実行をクリックすると、次の応答が返されます。

間違った応答

200 OK

- Show headers -

{
 "displayName": "matjes993",
 "mainEmail": "matjes993@gmail.com",
 "teeShirtSize": "L",
 "conferenceKeysToAttend": [
  "ag9zfnVkYWNpdHk2MTNuZXdyMwsSB1Byb2ZpbGUiFTExMTAxNDEyMTM0NDI2MTgyNTQwOAwLEgpDb25mZXJlbmNlGJJODA"
 ],
 "userId": "111014121344261825408",
 "kind": "conference#resourcesItem",
 "etag": "\"E9X210UxHC5oxQ1CO9nNLV3Nj2U/FsMMRtBBI307rMvfLGhJOG_P8uI\""
}

もう一度実行をクリックすると、正しい応答が得られます。常に間違っていることと正しいことが交互に繰り返されますが、データストア クエリ内のデータは同じままです。これは私にはまったく意味がありません。

getProfile メソッド:

@ApiMethod(name = "getProfile", path = "profile", httpMethod = HttpMethod.GET)
public Profile getProfile(final User user) throws UnauthorizedException {
    if (user == null) {
        throw new UnauthorizedException("Authorization required");
    }

    String userId = user.getUserId();
    Key<Profile> key = Key.create(Profile.class, userId);

    Profile profile =  ofy().load().key(key).now();
    return profile;
}

更新 1: 12 時間経った今でも、問題は解決していません。開発者コンソールには正しいデータが表示されますが、フロントエンドと API Explorer は常に正しい結果と間違った結果を切り替えています。下に 2 つの異なるデータストアがあり、API 呼び出しがそれらの間で交互に行われているように感じます..?

更新 2:アプリを GAE の新しいプロジェクトに再デプロイしましたが、まだエラーが発生しています。問題が発生したときのより単純な例があるため、上記の投稿を変更しました。

4

0 に答える 0