假设我们有一个集合/items/
,我们希望允许客户向这个集合添加新项目。受 Rails 的启发,我得出以下结论:我们只需添加资源/items/new
,想要添加项目的人首先发布问题GET /items/new
,接收空实体(可能设置了一些默认值),然后填充所需的字段和问题POST /items/
。
- 这种方法对真正的 REST API 有用吗?有什么可以改进/返工的?
- 如果突然这种方法很好(如果不是,无论如何):
假设每个项目都有必填字段Title。返回一些默认值以响应
GET /items/new
. 在这种情况下什么更好?返回null
Title并在 POST 为空时返回错误?为new
资源实现类似构造函数的逻辑,例如在查询字符串中询问必填字段?还有什么?
UPD。澄清一下,使用new
不是将“添加”拆分为“分配”和“写入内容”,因为没有对数据存储执行任何操作GET /items/new
。这是一种在实体设计中实现灵活性的方法:富客户端可以根据响应新出现的内容动态呈现输入字段。那有意义吗?或者合同要修复,我们需要为这样的变化对 API 进行版本控制?