Validation RESTful API-相关记录的验证

Validation RESTful API-相关记录的验证,validation,rest,Validation,Rest,我正在实现RESTfulAPI服务,我对保存相关记录有疑问 例如,我有用户表和相关的用户电子邮件表。用户电子邮件应该是唯一的 在客户端,我有一个包含用户数据字段和大量user\u email字段的表单(用户可以独立添加任意数量的字段)。当用户保存表单时,我必须首先进行查询以在users表中创建记录以获取她的ID,​​只有这样,我才能进行查询以保存用户电子邮件(因为在现在,我有记录的id,在保存用户数据后会有响应)。但如果用户在任何字段中输入的不是唯一的电子邮件,则请求将失败。因此,我在users

我正在实现RESTfulAPI服务,我对保存相关记录有疑问

例如,我有
用户
表和相关的
用户电子邮件
表。用户电子邮件应该是唯一的

在客户端,我有一个包含用户数据字段和大量
user\u email
字段的表单(用户可以独立添加任意数量的字段)。当用户保存表单时,我必须首先进行查询以在
users
表中创建记录以获取她的ID,​​只有这样,我才能进行查询以保存用户电子邮件(因为在现在,我有记录的id,在保存用户数据后会有响应)。但如果用户在任何字段中输入的不是唯一的电子邮件,则请求将失败。因此,我在
users
表中创建了一条记录,但没有在
user\u emails
表中创建记录


在保存之前实现所有这些数据验证的方法是什么?

这不是相关的restful api,而是后端的事务处理。如果您使用的是Java,使用JPA,您可以在同一事务中持久化这两个元素,然后您可以注意到是否存在问题,并回滚整个事务,返回响应。

如果可以的话,我会将其压缩为单个请求。只是为了表现,如果没有别的。使用
user\u email
作为键,让请求返回某种状态结果:如果
user\u email
是唯一的,它将以成功消息进行响应。否则,就意味着失败

最好只在服务器端实现该检查,而不是同时使用ID值,除非需要。它将提供更好的性能来实现这一点,并让您以后更容易地更改实现


至于您实际使用的代码,因为我并不是百分之百地理解您的实际要求,如果您使用的是SQL Server,您可以使用
MERGE
。这将使导入用户的电子邮件变得更容易,让数据库担心重复的邮件。

向我解释下一票的原因会更好吗?我认为工会的查询是违反REST原则的单一查询@也许我误解了你的问题。我的印象是,用户的电子邮件是用户的唯一标识,即使不是假定的身份ID。特别是因为听起来你可以将电子邮件直接转换为ID。尽管在任何情况下,我仍然认为可能有时间为了性能而改变一两条规则。此外,无论谁对此投了反对票,我很好奇,根据页面的定义,这里面有什么不对的地方。“每当你遇到一篇非常草率、不费力气的帖子,或者一个答案明显错误,甚至可能是危险的错误时,请使用你的反对票。”我不认为我说的任何话都是这些事情,但如果我错了,我会删除或修改我的答案。一个用户可以有很多电子邮件,但这并不重要,因为这只是一个例子。我猜合并影响(或创建)不同应用程序实体的请求是错误的。好的,等等。如果你觉得这个答案不正确的话,我会马上删除它。但是,您首先是如何获取用户ID的?你说你在提出请求,但你是根据什么提出请求的?