RESTFul体系结构中的唯一约束

use*_*120 6 database rest http stateless

凭借15年的有状态客户端 - 服务器软件开发经验(以及它固有的问题),我仍然试图在RestFul架构中掌握无状态的概念.

假设我有一个通用接口将业务对象发布到我的REST服务.例如用户资源.我的用户资源应该限制其电子邮件地址的唯一性.我最初的反应是使用底层的数据库工具"garantuee"这个.第二个反应是引入一些锁定或事务机制.

但我的Restafarian同事回答:"不!" 客户端应检查新用户的电子邮件是否唯一,您应该接受这样一个事实,即可以插入重复的电子邮件地址的小窗口时间.客户端应用程序应该能够处理此冲突.

这反过来反对我所学到的一切,根本不自然.请赐教......

Xea*_*ago 16

我认为没有理由不返回适当的HTTP代码:409 Conflict.这可以在从数据库中获取错误时返回.

由于可用性原因,在发送请求之前检查电子邮件地址是否唯一是很好的,因为您可以提示用户(并禁用提交)来纠正问题.无论如何,仍然建议服务器端验证.