我目前正在学习 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 上的一个新项目中,但错误仍然存在。我改变了上面的帖子,因为我现在有一个更简单的例子,当问题发生时。