向appengine端点客户端发送错误

时间:2016-02-18 02:53:49

标签: java google-app-engine google-cloud-endpoints

在我的GAE端点中,在我的用户注册API方法中,我检查用户是否已存在具有给定用户名的用户。如果用户已存在,我需要向端点客户端发送错误。

目前我从端点抛出如下所示的exception

$first

然后在端点客户端中,我捕获如下的异常。

User user = ofy().load().key(Key.create(User.class, username)).now();
if (user != null) {
    throw new BadRequestException("Username already exists");
}

当端点抛出BadRequestException时,客户端获取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."; } 并且HttpResponseException e包含一个json字符串,包括从端点发送的错误消息字符串。我需要解析json以获取从服务器发送的实际错误消息。

尽管这有效,但我觉得应该有更好的方法从端点向客户端发送错误消息。那么,有没有人知道更好(或推荐)的方式呢?

1 个答案:

答案 0 :(得分:2)

我认为你做的一切都是正确的。

HTTP旨在向用户发送包含4xx代码和有意义内容的响应。它可以是浏览器的HTML,api客户端的JSON或者可以为客户端提供某些上下文的任何内容。

如果您担心使用例外,那也很好。当然,您可以使用手动设置的状态代码准备响应,但这不会改变任何内容,只需要更多代码。当您在这种情况下使用例外时,您也不太可能创建错误。