Restful 风格 如何处理 软删除
Restful 风格 如何处理 软删除
软删除
Restful
- [DELETE] /system-service/v1/user/
- [PUT] /system-service/v1/user/1234 --- {id: 1234, name: '管理员', deleted: true}
- [PATCH] /system-service/v1/user/1234 --- {id: 1234, deleted: true}
非Restful
- [POST] /system-service/deleteUser --- {id: 1234}
- [POST] /system-service/delete --- {dto: 'user', id: 1234} // json-api
- [POST] /system-service/center --- {metricId:'hashValue', data: {id: 1234}}
物理删除
非Restful
- [POST] /system-service/deleteUser --- {id: 1234}
个人的困惑
- 对于逻辑删除 本质上是修改数据, 而非删除, method 该使用 DELETE 还是 PATCH / PUT
请大家批评与指教
回答:
“软删除” 是后端相对于数据处理的概念,或者说是产品要求的概念。而对于调用端的理解,就应该是 “删除” 操作,而非变更数据标记,前端不应该关心这一点。
在一般业务实践中,既然后端使用 “软删除” 作为业务逻辑,缺省情况下的 “删除” 对应的都应该是 “软删除”,除非有更高级别的管理员账号可以操作 “真删除”,那么可以在 DELETE 请求的 Payload 中携带 {"force": true}
来表示强制删除即可,当然后台要做权限验证。
- 软删除
DELETE /v1/user/1234
- 真删除(物理删除)
DELETE /v1/user/1234{"force": true}
回答:
我理解软删除这种逻辑应当对前端透明,所以使用DELETE
是符合语义的
以上是 Restful 风格 如何处理 软删除 的全部内容, 来源链接: utcz.com/p/944143.html