java如何从restful服务返回数据库错误?
我正在编写服务器端和客户端。如果请求成功或出现HTTP 404、400、405等错误。。。我可以毫无问题地处理它。然而,我不知道从数据库方面处理错误的最佳方法是什么。喜欢
ERROR: duplicate key value violates unique constraint "UserInfo_image_id_key"
SQL state: 23505
Detail: Key (image_id)=(123123) already exists.
如果数据库上有更新,我可以像这样检查它
int result = ps.executeUpdate();
if (result > 0) {
System.out.println("Successfully updated");
return true;
} else {
System.out.println("DB not updated!");
return false;
}
你能帮助我如何处理else loop
上的此类错误案例吗
# 1 楼答案
客户端应该而不是知道服务器的某些后端有问题。因此,无论是数据库导致了问题,都应该只在rest api的日志中可见。 当更新成功时,还可以返回HTTP 200(OK),当创建新记录时返回HTTP 201,当获得重复密钥冲突或类似错误时返回HTTP 409(冲突)
处理数据库问题只是编码,所以我想这不是你的问题;-)
# 2 楼答案
为了将用户消息返回给客户机,首先需要创建一个包含该消息的简单Java类(POJO)
你的POJO可能看起来像
你的服务器端代码(我的情况是Jersey)
请注意,Jersey正在将UserMessage转换为XML(序列化)。这当然可能是JSON
客户端代码(同样假设)
在你的客户端代码中,只需检查消息。getUserCode()!=用户信息。用户代码。成功,然后显示错误消息
# 3 楼答案
最好在服务器端创建一个错误处理pojo类,如下所示,并在catch块中使用json转换返回其对象,并显示正确的错误消息。在客户端,您可以成功访问其属性,或者访问ajax或rest调用的块
# 4 楼答案
如果您有这样的DB错误,executeUpdate将抛出一个SQLException
有几种方法可以解决这个问题: