1

我目前正在学习 Google-App-Engine ( https://www.udacity.com/course/ud859 ) 上的 udacity 课程。有简介和会议。每个配置文件都可以注册会议,然后将其添加到配置文件对象中的列表中。

当我现在查看“getProfile”请求的 API Explorer 时(检索当前活动用户的用户数据,由 oAuth2.0 验证),每次单击“执行”时都会得到不同的结果。

当我第一次单击执行时,我得到了正确的响应:

正确响应(我通过开发人员控制台数据存储查询验证了这一点):

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 总是在正确和错误的结果之间切换。几乎感觉下面有两个不同的数据存储,并且 API 调用在它们之间交替..?

更新 2:我将应用程序重新部署到 GAE 上的一个新项目中,但错误仍然存​​在。我改变了上面的帖子,因为我现在有一个更简单的例子,当问题发生时。

4

0 回答 0