Restful 风格 如何处理 软删除

zhangzejie
  • 5
新手上路,请多包涵

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}

个人的困惑

  1. 对于逻辑删除 本质上是修改数据, 而非删除, method 该使用 DELETE 还是 PATCH / PUT

请大家批评与指教

回复
阅读 1.4k
2 个回答
✓ 已被采纳

“软删除” 是后端相对于数据处理的概念,或者说是产品要求的概念。而对于调用端的理解,就应该是 “删除” 操作,而非变更数据标记,前端不应该关心这一点。

在一般业务实践中,既然后端使用 “软删除” 作为业务逻辑,缺省情况下的 “删除” 对应的都应该是 “软删除”,除非有更高级别的管理员账号可以操作 “真删除”,那么可以在 DELETE 请求的 Payload 中携带 {"force": true} 来表示强制删除即可,当然后台要做权限验证。

  • 软删除
DELETE /v1/user/1234

  • 真删除(物理删除)
DELETE /v1/user/1234

{"force": true}


我理解软删除这种逻辑应当对前端透明,所以使用DELETE是符合语义的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏