这不是一个技术问题,而是对这个主题的反思。
REST 已经民主化了一种使用 HTTP 协议提供资源的好方法,并让开发人员通过拆分资源和用户界面来做最干净的项目(后端现在真的只使用 REST API 来处理后端)。
关于这些 API,大多数时候我们使用 GET、PUT/PATCH(嗯?)、POST 和 DELETE,它们都模仿 CRUD 数据库。
但是随着我们项目花费的时间的流逝,我们觉得可以通过添加大量出色的功能来改进用户体验。例如,为什么用户会害怕删除资源?为什么不只是放置一个恢复系统(就像我们在 Google Keep 应用程序中看到的那样,它可以让我们撤消删除,我认为这在 UX 方面很棒)。
防止无意删除的一种做法是在表中使用表示资源的列。例如,我要删除一本书,因此通过单击删除按钮,我只会在我的数据库中将此行标记为“deleted = TRUE”,并防止在浏览资源列表(GET)时显示已删除的行.
最后一个与我们亲爱的 REST 模式相冲突,因为 DELETE 和 DESTROY “方法”之间没有区别。
我的意思是,我们是否应该考虑让 REST 发展到我们的用户体验需求,所以我的意思是也让 HTTP 协议发展,或者这应该保持作为一种纯粹的资源管理,我们应该遵循 HTTP 协议而不是试图打扰它和只是使用解决方法来适应它(比如使用 PATCH 进行软删除)?
Personnaly 我希望看到至少 4 个新协议,因为我们正在尝试尽可能好地限定资源:
- DELETE成为一种防止其他方法对其产生影响的方法
- 通过完全删除此资源的痕迹,DESTROY变得更加引人注目
- RECOVER是一种对其他方法说“嘿,伙计们,他回来了,敬请期待”的方式
- TRASH类似于 GET 但仅适用于 DELETED 资源
让我想到它的是我对处理这种资源行为的干净 REST 解决方案的研究。我看过一些网站帖子,包括
- https://www.pandastrike.com/posts/20161004-soft-deletes-http-api
- https://philsturgeon.uk/rest/2014/05/25/restful-deletions-restorations-and-revisions/
- ...
这建议我们使用 PUT 或 PATCH 使软删除变得可用,但我觉得这听起来不对,不是吗?
我对这个问题的想法:
- 在提出新的 HTTP 方法和更新以前的方法之间是否有很大的进步(我听说 HTTP/2 是一回事,也许我们可以将它们发布?)
- 在网络开发领域之外有意义吗?我的意思是这种变化是否会影响我们的其他域?