我实现了RESTful API服务,我对保存相关记录有疑问。
例如,我有users
表和相关的user_emails
表。用户电子邮件应该是唯一的。
在客户端,我有一个包含用户数据字段和多个user_email
字段的表单(用户可以单独添加任意数量的字段)。当用户保存表单时,我必须首先进行查询以在users
表中创建记录以获取她的ID,然后我才能进行查询以保存用户的电子邮件(因为现在我有记录的ID来了保存用户数据后的响应)。但如果用户在任何字段中输入的不是唯一的电子邮件,则请求将失败。所以我在users
表中创建了一条记录,但没有在user_emails
表中创建记录。
在保存之前,有哪些方法可以实现所有这些数据的验证?
答案 0 :(得分:0)
这与后端的restful api和事务处理无关。如果您使用的是Java,那么使用JPA可以在同一个事务中保留这两个元素,然后您可以注意到是否存在问题并回滚整个事务返回响应。
答案 1 :(得分:-1)
如果可以的话,我会将其压缩为单个请求。只是出于表现的目的,如果没有别的。使用user_email
作为密钥,让请求返回某种状态结果:如果user_email
是唯一的,它将以成功消息响应。否则,它表示失败。
除非您需要,否则最好只在服务器端执行该检查,而不是使用ID值。它可以提供更好的性能,并且它可以让您以后更轻松地更改实现。
至于您使用的实际代码,因为我不是百分之百的实际问题,如果您使用的是SQL Server,则可以使用MERGE
。这样可以更轻松地导入用户的电子邮件,让数据库担心重复。