在我的GAE端點中,在我的用戶註冊API方法中,我檢查用戶是否已經存在給定的用戶名。如果用戶已經存在,我需要向端點客戶端發送錯誤。向appengine端點客戶端發送錯誤
目前我從端點拋出如下所示的exception。
User user = ofy().load().key(Key.create(User.class, username)).now();
if (user != null) {
throw new BadRequestException("Username already exists");
}
然後在端點客戶端,我發現像下面這樣的異常。
try {
gaeEndpoint.registerUser(mEmail, mPassword).execute();
} catch (HttpResponseException e) {
mErrorMessage = e.getContent();
} catch (IOException e) {
mErrorMessage = "Failed to communicate with server. Please check your internet connection.";
}
當端點拋出一個BadRequestException,客戶獲得HttpResponseException e
和e.getContent()
包含一個JSON字符串包括從端點發送的錯誤消息字符串。我需要解析json以獲取從服務器發送的實際錯誤消息。
即使這樣做,我覺得應該有一個更好的方法來從端點向客戶端發送錯誤消息。那麼,有沒有人知道一個更好的(或推薦)這樣做?
對我來說看起來不錯。你的'HttpResponseException'不僅包含一個內容部分。它應該包含一個statusCode,它比代碼中的內容更容易處理,因爲if(statusCode == 400){Whoopsie ...}比解析響應更容易。 – konqi