私は現在、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 の新しいプロジェクトに再デプロイしましたが、まだエラーが発生しています。問題が発生したときのより単純な例があるため、上記の投稿を変更しました。