微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

很奇怪的http删除rest操作-删除参数很多

如何解决很奇怪的http删除rest操作-删除参数很多

分析团队制定了一些规范,这对我来说听起来有点奇怪。

我必须删除数据库表上的资源。我有 rekord 的 id 作为输入参数。

这是直接的 http 删除操作。

DELETE http://my-url/{id}

他们想添加一些其他值作为输入参数,出现在 rekord 中,因为,他们说“在这种情况下删除操作非常微妙,我们希望确保在前端排除错误,传递的 id 应该是是传递的 rekord 值的 id”。

有很多关于这个要求的内部讨论。菜肴在参与者之间飞来飞去。无论如何,我们必须满足它。

我知道这不是更多的 RESTful 操作。

我是这样修改的:

DELETE http://my-url/{id}
REQEUST BODY
{
    "myProperty1" = 123,"myProperty2" = "VALUE",...
}

Swagger 一代对带有 REQUEST BODY 的 DELETE 感到愤怒。

我必须切换到

  • 使用 REQUEST BODY 进行 POST 操作
  • 带有一些请求参数的删除操作

开发团队喜欢尽可能长时间地呆在 RESTful 环境中。 什么是最好不要走调?

我们认为不会受到赞赏的任何其他建议或解决方案。

解决方法

Swagger 一代对带有 REQUEST BODY 的 DELETE 感到愤怒。

是的,没错。

DELETE 请求消息中的负载没有定义的语义 -- RFC 7231

DELETE 是将 URI 与其表示解耦。这有点类似于从地图/字典或文件系统中的符号链接中删除键。它告诉网络服务器停止提供特定的网页。

通常很容易找出 DELETE 请求的标识符;它将与您用来通过 GET 请求查找表示的标识符相同。


DELETE 是在 transfer of documents over a network 域中具有语义的操作。

注意标准中包含的这个观察:

允许使用 DELETE 方法的资源相对较少——它的主要用途是远程创作环境,用户对其效果有一定的指导。

如果您想要做的是将带有有效负载的消息传递到您的服务器,以便服务器可以做一些聪明的事情,您可能应该使用 POST,而不是 DELETE。

记住:it is okay to use POST。万维网使用 little more than GET and POST 取得了灾难性的成功。


他们想添加一些其他值作为输入参数,出现在 rekord 中,因为,他们说“在这种情况下删除操作非常微妙,我们希望确保在前端排除错误,传递的 id 应该是是传递的 rekord 值的 id”。

这里所寻求的可能是 conditional 删除。我们有标准化的标头,validators 可以使用这些标头来确定 DELETE 请求和资源的当前状态是否“匹配”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?