Web Api 中的逻辑删除的 PUT 或 DELETE

InT*_*ons 5 asp.net-web-api

我们应该在 Web Api 中为逻辑删除创建 PUT 或 DELETE 请求吗?即设置标志 IsDeleted = 0 或 1

dev*_*mer 8

Web API 的 REST 思想将 HTTP 动词映射到资源操作,典型的映射如下所示:

  • 获取=读取
  • 发布 = 创建
  • PUT = UPDATE(尽管有时使用 PATCH 代替 PUT,并且 PATCH 可能更正确)
  • 删除=删除

那么,我要问的问题是,删除操作对于 API 的使用者来说是否是逻辑上的(而不是物理上的)透明的?如果 API 使用者的期望是他们要删除一条记录,那么我会在请求中使用 DELETE 动词。

是的,您可以使用 PUT/PATCH 来更新 IsDeleted 字段,这本身并没有错但我会从 API 使用者期望的角度来看待这个问题,以便决定在这种情况下哪个是正确的。