You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Typescript API 软删除(仅标记DB属性为deleted: true)应使用何种HTTP请求方法?

软删除场景的HTTP请求方法选择

软删除的本质是修改资源的deleted状态字段,而非真正擦除数据库记录,符合REST规范的选择主要有两种,根据你的接口暴露逻辑选择即可:

  • 优先选 PATCH 方法
    这是语义最匹配的方案:PATCH 本身就用于资源的局部更新,刚好对应你修改单个deleted字段的操作。
    常规请求示例:

    PATCH /api/orders/456
    Content-Type: application/json
    
    { "deleted": true }
    

    这种方案的优势是完全对应操作本质,不需要隐藏实现细节,也符合REST API的常规设计习惯,和TypeScript技术栈没有冲突,类型定义也可以直接复用现有资源的部分字段类型。

  • 可选 DELETE 方法
    如果你希望对外屏蔽软删除的实现细节,对外暴露的能力就是「删除该资源」,也可以用DELETE方法,内部实现改为标记deleted: true即可。
    注意要保证对外语义一致:调用DELETE返回成功后,普通的资源查询接口(比如GET /api/orders/456)应该返回404 Not Found,只有专门的回收站、历史数据查询类接口才能查询到已软删的资源,避免语义混乱。

不建议的选择

  • 不要用PUT:PUT的语义是整体替换资源,仅修改单个字段用PUT语义不匹配,还会增加不必要的参数传输
  • 不要用POST:POST多用于创建子资源或执行非标准自定义操作,软删除属于标准的资源状态变更,没有必要用POST实现

内容的提问来源于stack exchange,提问作者Vinutha S H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:39:04