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

恢复软删除的操作应归为PUT(更新)还是POST(存储)请求?

问题解答

你的理解是对的,这个操作更适合用PUT方法的接口,原因如下:

  • 先明确RESTful方法的核心区别:

    • POST的语义是创建新资源,属于非幂等操作——重复提交要么创建多条重复资源,要么因为唯一性约束报错,结果不一致。
    • PUT的语义是对指定资源进行更新或创建,属于幂等操作——无论提交多少次,最终只会得到一个符合预期状态的指定资源,结果一致。
  • 看你的代码逻辑:

    User::withTrashed()->updateOrCreate(['user_id' => 1], ['value' => 1, 'update_at' => now()])->restore();
    

    这段代码的行为是:

    1. 如果user_id=1的记录不存在,就创建它;
    2. 如果记录存在(哪怕是软删除状态),就更新value和update_at,然后恢复为正常状态。
      重复提交的话,最终只会存在一条user_id=1的活跃记录,value始终为1,完全符合PUT的幂等特性。

而原本的POST接口(用create),如果重复提交,要么因为user_id唯一性约束报错,要么创建多条记录,不符合幂等性,和你现在的代码逻辑完全不匹配。

所以把这个操作对应到PUT方法的接口是合理的。

内容的提问来源于stack exchange,提问作者fjduqrllhdnolvgrcc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:12:33