如果数据库中已存在记录,则阻止 HTTP POST 请求

Posted

技术标签:

【中文标题】如果数据库中已存在记录,则阻止 HTTP POST 请求【英文标题】:Block HTTP POST Request if a record already exists in the database 【发布时间】:2014-02-09 03:10:52 【问题描述】:

我正在开发一个 Java Rest Web 服务来将用户数据存储在 mysql 数据库中。

当我用 curl 测试尝试 POST 时,我得到了

204 - 无内容

在客户端和

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'vinayUserName' for key 'name_UNIQUE'

在服务器端。

如何编写 Web 服务来处理数据库中唯一数据的 409 冲突并将消息传达给客户端?

我正在使用 Jersey 开发 Web 服务,并在客户端使用 Jquery ajax 来发布数据。非常感谢任何帮助。

谢谢

【问题讨论】:

您应该处理 SQL 异常并作为业务验证异常消息重新抛出。 谢谢,我的想法是一旦来自客户端的数据被反序列化,如果它已经存在于数据库中,则必须对其进行测试。如果它不退出,应该有一些警报机制来通知客户端。即使我处理了 SQL 异常,我如何才能将响应传递回客户端? 【参考方案1】:

您应该处理 SQLException 、运行时异常和异常,然后使用相应的错误消息作为参数更新 web 服务响应(状态 - '成功/失败',错误消息 - '失败的原因')。

在 jquery 中从参数中提取值并显示给用户。

【讨论】:

非常感谢。帮助很大 codeproject.com/Articles/37727/… --- 请看一下以获得一个想法.. 好的,感谢您的即时回复。

以上是关于如果数据库中已存在记录,则阻止 HTTP POST 请求的主要内容,如果未能解决你的问题,请参考以下文章

尝试验证数据库中已存在的电子邮件时出现问题

TFS2010:如果存在代码分析警告,则阻止签入

将MYSQL某一数据库中的多条记录批量插入到另一MYSQL数据库时,记录不存在则插入,存在则更新

如何判断数据库中是不是存在某个数据

检查数组 React 中是不是存在项目

有没有办法恢复一个月前删除的Mysql中已删除的行