GoogleエンドポイントとGoogleアプリケーションエンジンを使用してAndroidアプリケーションを開発しています。私のバックエンドは実際に何もしていないようです。まるで何もデータストアに保存されていないかのように見えるので、そこから何も検索することはできません。Googleアプリケーションエンジンエンティティが作成されていません
private static String getUserId(User user) {
String userId = user.getUserId();
if (userId == null) {
AppEngineUser appEngineUser = new AppEngineUser(user);
ofy().save().entity(appEngineUser).now();
// Begin new session for not using session cache.
Objectify objectify = ofy().factory().begin();
AppEngineUser savedUser = objectify.load().key(appEngineUser.getKey()).now();
userId = savedUser.getUser().getUserId();
}
return userId;
}
@ApiMethod(name = "saveProfile", path = "profile", httpMethod = ApiMethod.HttpMethod.POST)
public Profile saveProfile(final User user, final ProfileForm profileForm) throws UnauthorizedException {
if(user == null) {
throw new UnauthorizedException("Authorization required.");
}
String firstName = profileForm.getFirstName();
String surname = profileForm.getLastName();
String userEmail = user.getEmail();
int year = profileForm.getYear();
int month = profileForm.getMonth();
int day = profileForm.getDay();
Profile profile = ofy().load().key(Key.create(Profile.class, getUserId(user))).now();
if (profile == null) {
// the user does not have a profile and is creating one for the first time
profile = new Profile(getUserId(user), firstName, surname, userEmail, year, month, day);
} else {
profile.update(firstName, surname, userEmail, year, month, day);
}
ofy().save().entity(profile).now();
return profile;
}
@ApiMethod(name = "getProfile", path = "profile", httpMethod = ApiMethod.HttpMethod.GET)
public Profile getProfile(User user) throws UnauthorizedException {
if (user == null) {
throw new UnauthorizedException("Authentication required.");
}
return ofy().load().key(Key.create(Profile.class, getUserId(user))).now();
}
}
プロファイルクラスは@Entity
注釈を持っているので、のような静的なブロックに客観に登録されています:
は、私が働いていないエンドポイントに書かれているAPIメソッドの一部です
static {
factory().register(AppEngineUser.class);
factory().register(Profile.class);
}
useridは
com.google.appengine.api.users.User
0123を介してGAEによって生成されます
のuserIdプロパティは、@Index
アノテーションを持つStringです。
私はまた、api explorerと、これらのメソッドにどのように応答しているのか混乱しています。私がsaveProfile apiメソッドを呼び出すと、userId
が0
、メールが"[email protected]"
と返されますが、これはローカルホスト上で実行されているときのデフォルトのメールだと思います。
私はHTTP経由でapiエクスプローラも実行していますが、Googleではこれが「問題を引き起こす可能性があります」と述べています。これが何も働いていない理由ですか?私は私のAPIを使用するために私には安全でないスクリプトを読み込まなければならなかったが、HTTPSの代わりにHTTP経由でホストされているので動作しないかもしれない。
GAEの理解に根本的な欠陥があるため、またはローカルホスト上で動作しているために、私のメソッドを完全にテストすることができないというこの問題は完全に問題ですか?後者の場合、おそらく私はAppspotにデプロイする必要があり、物事が円滑に実行される可能性があります。
余分なことがあれば、お気軽にお尋ねください。
ありがとうございました!