如果 DELETE 不可能,则 REST HTTP 状态代码

2024-01-10

我的问题是关于 HTTP 状态代码的一个非常通用的问题,当DELETE在资源上是不可能的(但不考虑用户的权利)。

我们对某种类型的资源有一个 RESTful API。

The DELETE方法已在资源上获得授权,但在某些情况下无法删除资源(如果有数据绑定到该资源)。

在这种情况下返回给客户端的正确 HTTP 状态代码是什么?

以下是我收集的一些可能性以及为什么它在我的情况下似乎不合适:

  • 403 (禁止) : 似乎主要与用户权限有关。
  • 405 (不允许的方法) :似乎 API 并非设计用于响应此类资源的此方法。
  • 409 (Conflict) :看起来合适,但客户端应该有可能解决与 API 的冲突,但这里的情况并非如此。

Update :无法通过 REST API 更改阻止删除资源的数据绑定。然而,资源可以通过其他方式“释放”,因为数据来源的数据库也可以被其他应用程序访问,这些应用程序可能会更改资源的状态(数据库中的 SQL DELETE 始终可以做到这一点)。


我认为 409 是最合适的,因为它在 RFC 中的措辞如下:

409(冲突)状态码表示请求无法 完成由于与目标的当前状态冲突 资源。该代码用于用户的情况might是 能够解决冲突并重新提交请求。服务器 应生成包含足够用户信息的有效负载 认识冲突的根源。

(强调我的)

根据我对问题描述的理解,不允许 DELETE 的原因正是与目标资源的当前状态冲突。如 RFC 中所示,响应有效负载可以给出原因的指示,并且,可选地, 用户might能够解决它。我在规范中没有看到任何使 409 不合适的内容,只是因为 API 不提供冲突解决的可能性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果 DELETE 不可能,则 REST HTTP 状态代码 的相关文章

  • WCF 4.0 REST 上传 MS-Excel 文件

    我正在尝试通过 WCF REST 服务上传 MS Excel 文件 我使用了下面帖子中给出的解决方案 RESTful WCF服务图片上传问题 https stackoverflow com questions 664712 restful
  • 如何在 Jersey RESTful Web 服务中放置 cookie?

    我想通过 Jersey API 将 cookie 从 PUT webservice result 放置到 POST webservice 这是我的代码 WebResource service1 client resource http te
  • 不同 servlet-api 版本冲突

    我正在使用 Maven 和 Jetty 作为服务器来开发 RestEasy Web 服务 其中一项服务应使用扩展 javax servlet http HttpServletResponseWrapper 的 Filter 问题出在来自 s
  • 什么是 RESTful Web 服务

    我尝试从维基百科等阅读有关 RESTful Web 服务的信息 但我必须承认我不明白 有一部电影中 丹泽尔 华盛顿说 像我 5 岁孩子一样向我解释一下 有人可以为我做有关 RESTful 服务的事情吗 如果你知道电影的名字 那就加分了 当我
  • 有什么方法可以处理 ASP.Net MVC 中的 Put 和 Delete 动词吗?

    只是想知道是否有人知道真正宁静的 Put delete 实现 asp net mvc Preview 5 最好 查看 mvccontrib 项目 http www mvccontrib org http www mvccontrib org
  • 创建rest api url以连接mysql数据库

    我想学习如何创建一个rest api url 以便我可以使用该url获取信息并将信息发布到我的mysql数据库中 谷歌搜索了很多并阅读了各种文章 但没有找到任何精确的内容可以学习 所有内容均以 about api 开头 以已创建的其余 ur
  • Laravel 5 Eloquent 在多个级别上将关系附加到 JSON

    因此 在模型中包含关系非常容易 例如 class User extends Model protected with roles class Role extends Model protected with permissions 当有对
  • C# 中的 GetResponse()

    我的可移植类库中有以下代码 但它给出了错误 System Net HttpWebRequest不包含以下定义GetResponse public async Task GetStateByUserId string userID HttpW
  • 如何使用postman调用REST API进行azure文件存储?

    我想通过postman调用azure的文件存储相关的REST API 以下是我提出请求的方式 我正在请求列出文件存储帐户中的所有共享 如下所述 https learn microsoft com en us rest api storage
  • 如何从 REstAssured 中的 Json 数组获取 JSON 对象

    任何人都可以帮我解决这个场景 我是新来的RestAssured和处理JSON在我们的自动化脚本中 我有一个API谁的回应是JSONArray i e id 1002 entity testcase fieldName TextName di
  • APPLICATION_JSON 无法解析或不是字段

    我在应用程序中生成 JSON 时遇到问题 我正在尝试有关的教程通过 AngularJS 使用 Java Restful Web 服务 https www youtube com watch v F201AN5UEg0 我创建了一个动态 We
  • Spring/Rest @PathVariable 字符编码

    在我使用的环境 Tomcat 6 中 路径段中的百分比序列在映射到 PathVariable 时显然是使用 ISO 8859 1 进行解码的 我希望它是 UTF 8 我已经将 Tomcat 配置为使用 UTF 8 使用 server xml
  • 用于高级搜索/过滤的.Net Web API URL 约定

    我对 Microsoft 的 REST 和 WebAPI 比较陌生 我们正在实现一个中心 REST 服务 它将容纳多种类型的对象获取和设置 作为该项目的领导者 我的任务是提出我们正在使用的正确的 Uri 设计 我想知道关于战争什么想法更好
  • 使用哪个 HTTP 状态代码来拒绝由于乐观锁定失败而导致的 PUT

    假设我想实现某种乐观锁定并使用 ETag 来指示最新的资源状态 这意味着 客户将使用If Match标题时PUT等待更新 根据HTTP规范 http www w3 org Protocols rfc2616 rfc2616 sec14 ht
  • 为什么我们需要 RESTful Web 服务?

    我将学习 RESTful Web 服务 最好说我必须这样做 因为它是 CS 硕士学位课程的一部分 我在 Wikipedia 上阅读了一些信息 还在 Sun Developer Network 上阅读了一篇有关 REST 的文章 我发现这不是
  • REST 中子资源和路径变量冲突?

    设计路径解析可能含糊不清的 REST API 是否被认为是不好的做法 例如 GET animals id Returns the animal with the given ID GET animals dogs Returns all a
  • 向 JMeter REST 请求添加身份验证

    我今天花了大部分时间试图让它发挥作用 但仍然没有成功 我有一个简单的案例 我只想向我的网络服务发送一个 GET 请求 但无论我做什么 我都无法对其进行身份验证 我尝试过授权管理器 Cookie 管理器 标头管理器的各种组合 但无济于事 我把
  • 如何给所有HttpClient请求方法添加参数?

    我正在编写一些使用 Apache 的 Java 代码HttpClient版本4 2 2使用 RESTful 第三方 API 该 API 具有利用 HTTP 的方法GET POST PUT and DELETE 需要注意的是 我使用的是 4
  • 在 Spring 应用程序中拥有 RestController 和 Controller 的最佳实践

    我不是问是不是possible 我知道是这样 但我想知道在我的应用程序中拥有前端的同时提供休息服务的最佳方式是什么 我正在开发一个 Spring Boot 应用程序 我目前有一个调用 jsp 页面的控制器 以及一个separate休息控制器
  • 当 REST 中的资源不支持操作时,HTTP 状态代码 404 或 501

    我有一个 REST 服务 根据正在查看的资源类型 我有某些可用的操作 So Resource1支持Operation1 and Operation2 eg Resource1 Operation1 Resource1 Operation2

随机推荐

  • jQuery 颜色选择器 z 轴问题

    我正在用这个选色器 http www eyecon ro colorpicker about 这真是太棒了 但是 我想在 jQuery 对话框中使用它 在表单内的输入标记上 但问题是当颜色选择器出现时 它部分位于对话框后面 在 z 轴上 因
  • GCP Cloud Run:禁用默认 URL 并仅使用自定义域?

    是否可以像这样禁用默认 URLhttps my app 332mpca uc a run app并且仅使用域映射中定义的自定义域 您无法使用自定义域来实现这一点 您可以通过在 Cloud Run 前面添加负载均衡器来实现类似的目标 这要归功
  • Node.js SFTP 客户端 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想通过 node js 应用程序访问 sftp 服务器 你知道有这个图书馆吗 或者你知道我如何实现这
  • Python 智能日期解析(不指定年份)

    如何解析没有年份的日期 使用 dateutil 以便当当前日期为 17 11 2012 时 这些日期将被解析如下 print parser parse 23 nov dayfirst True yearfirst False fuzzy T
  • 列表的列表的列表

    表示类型的好方法是什么LoL a 是列表的列表 的 的a 嵌套级别是任意的 但总体上是统一的 外部列表的元素 我想到的情况是对 a 的成员进行分组 列表 然后对每个子组应用下一个分组 依此类推 它 事先并不知道需要应用多少个分组 因此 rG
  • Quill 工具栏未渲染(图标路径显示而不是渲染)

    我正在尝试在 React 中运行本机 Quill 我遵循 quill 的快速入门 但不幸的是工具栏渲染存在问题 见下文 显示图标路径而不是渲染图标路径 请给我同样的指示 套筒组件 import Quill from quill core i
  • AttributeError:“Response”对象没有属性“body_as_unicode”scrapy for python

    我正在 scrapy 中处理响应并继续收到此消息 我只给出了发生错误的片段 我正在尝试浏览不同的网页 并且需要获取该特定网页中的页面数 所以我创建了一个响应对象 我在其中获取下一个按钮的 href 但继续获取AttributeError R
  • 如何为不同的构建配置指定不同的nuget包版本?

    我想为不同的项目配置指定不同的包版本 我知道这在我的 csproj 文件中对于非 NuGet 依赖项 裸 DLL 会是什么样子 但我也想尝试让它与 NuGet 包一起使用 问题是 NuGet 依赖项是在 packages config 中指
  • 为什么使用 redux-persist 而不是手动将状态持久化到 localStorage?

    另一种询问方式是 如果您真的只想使用 localStorage 补充 中保存的数据启动应用程序并将每个 redux 状态更改保存到 localStorage 持久 则使用还原 持久化 https github com rt2zz redux
  • Google Action 和 DialogFlow 错误“抱歉,此操作不适用于您的应用”

    我创建了一个 DialogFlow 应用程序 可以在我的开发者帐户中完美运行 但我需要以另一个用户的身份对其进行测试 因此在我的 Google Action 模拟器中 我添加了另一个测试帐户作为项目的所有者 我验证了该用户在 DialogF
  • 使用 MonoDevelop 4.0(又称 Xamarin Studio)重新获得 C/C++ 项目支持

    使用最新的 Xamarin Studio 从 MonoDevelop 4 0 重新标记 我无法打开 cproj不再可以在 MonoDevelop 3 0 4 7 中运行的项目 The 功能列表 http monodevelop com Do
  • 在 iOS Swift 中检测设备上正在播放的音轨

    我正在创建一个情绪跟踪应用程序 除其他外 它应该使用有关用户收听的歌曲的信息 具体来说 我感兴趣的是在播放曲目时提取从锁定屏幕视图中可见的标题 我搜索过互联网 但没有找到使用 Swift 访问这些数据的解决方案 有人可以帮忙吗 最简洁的答案
  • 链接运算符<<和运算符++的问题

    我正在学习C 我遇到了这个问题 include
  • 在循环中追加到数组 - Python

    请参见this https stackoverflow com questions 54983763 appending values to an array within an object looping over objects精简版
  • Neo4j分区

    有一种在 Neo4j 分区之间进行物理分离的方法吗 这意味着以下查询将转到节点1 Match a User Facebook 虽然此查询将转到另一个节点 可能托管在 docker 上 Match b User Google 情况是这样的 我
  • 如何正确地将 Angular index.html 文件替换/重命名为 index.php?

    在我的 Angular 项目中 我需要在 index html 文件中使用 PHP 我已经将其重命名为index php 并更新了 angular json 以在索引属性中使用index php 我的问题是 运行后ng build命令 di
  • 解决方案资源管理器 - 我的文件夹的自定义图标

    有什么方法可以更改文件夹的图标吗 在具有多个区域的大型 MVC 项目中 如果控制器 模型和视图具有不同的图标 或文本 那就太好了 带有 M 或 V 或 C 的文件夹会很好 如果我知道如何替换它们 我就可以创建它们 即使是在基于项目的变更中也
  • 将字符串转换为字符数组 - 多字节

    假设在 2019 年 每个非 UNICODE 安全的解决方案都是错误的 在 PHP 中将字符串转换为 UNICODE 字符数组的最佳方法是什么 显然 这意味着使用大括号语法访问字节是错误的 以及使用str split arr str spl
  • MySQL 中的 True/False 与 0/1

    这是faster在 MySQL 数据库中 布尔值 或者使用零和一来表示布尔值 我的前端只有一个是 否单选按钮 某些启用 使用布尔值 选项的 前端 会将所有 TINYINT 1 列视为布尔值 反之亦然 这允许您在应用程序中使用 TRUE 和
  • 如果 DELETE 不可能,则 REST HTTP 状态代码

    我的问题是关于 HTTP 状态代码的一个非常通用的问题 当DELETE在资源上是不可能的 但不考虑用户的权利 我们对某种类型的资源有一个 RESTful API The DELETE方法已在资源上获得授权 但在某些情况下无法删除资源 如果有