我们正在为iOS创建一个应用程序,并选择了在Google app Engine上运行的Java作为后端。我们使用Google Cloud Endpoint为iOS生成客户端库。我们对这其中的大部分都是相对较新的,我们不太确定后端应该如何响应基于用户操作的错误。例如,我们有一个用于创建自定义用户的方法,如果保存成功,该方法应返回user-object。但可能存在未满足的条件,如果是这样的话,应用程序必须获得适当的响应和处理呈现给用户。这就是我们的想法:
@ApiMethod(name = "createUser", httpMethod = HttpMethod.POST)
public User createUser(User user) throws BadRequestException
{
if(!validateUsername(user.getUsername()))
throw new BadRequestException("Invalid characters in username");
//Do stuff and save user
.........
return user
}然后,如果用户名存在,可能会抛出一个从ServiceException派生的自定义异常,等等。这是一个合理的方法吗?我只是觉得每次发生这样的事情都抛出异常有点残酷。它还会出现在日志中,这可能会使您很难区分需要修复的实际应用程序错误。
发布于 2014-01-23 12:19:00
我相信你抛出错误400 (BadRequestException)的方法在这种情况下是很好的。
此外,端点还提供了其他异常,如UnauthorizedException (401)、ForbiddenException(403)等。请查看list。
您还可以具有自定义异常,这些异常可以映射到Endpoint支持的其他HTTP代码。因此,使用Custom Exception的方法很好,但请记住,它最终需要映射到其中一个HTTP代码。
当涉及到解析客户端中的响应并根据错误执行一些自定义处理时,它可能会变得棘手,因为您必须设置特定详细信息的所有控件都限于message属性。因此,您需要以一种可以解析并确定要做什么的方式来破解消息格式。
https://stackoverflow.com/questions/21293628
复制相似问题