我的数据访问层支持upsert操作(Spring Data' s refl
),当未设置id字段时,插入新记录,当id字段设置时,它会被更新。
我想知道如何证明创建两个单独的REST方法所需的额外工作(在后端和前端方面):
仅创建一个REST方法:
除了更多RESTful之外,使用两种单独的方法有什么好处吗?
答案 0 :(得分:1)
使用不同的资源进行不同的操作会更加清晰。 通过REST意识形态 - PUT幂等方法和POST不是幂等的。因此每个POST请求都应该返回响应的新项目,但是PUT应该返回相同的项目作为响应。
我认为,当行为出现时,这是一件好事。
但是如果您为api编写文档,则可以在资源上使用这两个操作(但我会选择第一个选项)。
答案 1 :(得分:0)
支持upsert的数据访问层并不意味着REST API也应该支持它。我不会用两个含义来重载POST /users
。坚持两种不同的资源。
修改强>
POST /users
具有'添加新实例到资源集合的一般含义'。我认为没有办法将其扩展到......或者如果给出了ID,则更新现有实例'。 /users
是集合资源,而不是您想要操作的单个资源。对集合资源执行POST
应该操纵集合,而不是单个现有资源。