java - 向 appengine 端点客户端发送错误

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

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

目前我抛出一个 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 以获取从服务器发送的实际错误消息。

尽管这可行,但我认为应该有更好的方法从端点向客户端发送错误消息。那么,有人知道更好的(或推荐的)方法吗?

最佳答案

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

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

如果您担心使用异常,那也没关系。当然,您可以使用手动设置的状态代码准备响应,但这不会改变任何内容,只是增加了更多代码。在这种情况下使用异常时,产生错误的可能性也较小。

关于java - 向 appengine 端点客户端发送错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35471942/

相关文章:

java - 循环遍历可观察列表

java - 天气休息服务

google-app-engine - 为什么在 Go AppEngine aetest 中使用 datastore.Property List 获取 datastore.Put 的 "invalid entity type"?

maven - com.google.api.server.spi.auth.EspAuthenticator 未找到

android - 如何使用 Android Studio 0.8 对 Google Cloud Endpoints Java 进行单元测试

java - 错误: Failed to resolve: androidx.支持:support-v7:28. 0.0 Android Studio

java - RestTemplate 访问 Response 中的元素

iOS GCM 错误代码 501

google-app-engine - 在 GCP Cloud Run/Function 上使用固定的公共(public) IP(到白名单)

objective-c - 当 POST 数据具有多行时,Google Cloud Endpoints 会出错