当前位置: 首页 > 知识库问答 >
问题:

修改命名资源的从属的正确HTTP方法是什么?

东方骏
2023-03-14

我正在创建一个web客户端,它的目的是通过向数据库表中添加记录和从数据库表中删除记录来修改一组数据库表。它必须以原子的方式这样做,因此删除和插入都必须用单个HTTP请求来完成。显然,这是某种写操作,但我很难确定哪种方法是合适的。

POST起初似乎是正确的,只是RFC2616指定POST请求必须描述指定资源的“新从属”。我在这里可不是这么做的。

PUT可以用于对现有的东西进行更改,所以这似乎是正确的,只是RFC 2616还指定“PUT请求中的URI标识包含在请求[...]中的实体,并且服务器不得尝试将请求应用到其他资源”,这将禁止该方法,因为我的URI没有直接指定数据库表。

补丁看起来更接近了--现在我只是部分覆盖资源并不是作弊--但RFC5789明确表示,该方法与PUT一样,实际上必须修改URI指定的资源,而不是某个从属资源。

那么我应该用什么方法呢?

    null

共有1个答案

太叔鸿博
2023-03-14

开始..不是每件事都要Rest。如果Rest是你的锤子,一切都可能看起来像钉子。

如果您真的想要符合REST的理想,patch是不可能的。你只是真的应该转移状态。

因此,这个问题的常见“解决方案”是在您已经拥有的资源之外工作,但发明一个新的资源来表示您希望执行的“事务”。这个事务可以包含关于您正在按顺序执行的操作的信息,可能是原子式的。

但是,在大多数设计中,这并不是很合适,您应该回到post并定义一个在父级上执行的简单的RPC样式的操作。

 类似资料:
  • 这听起来像是一个新手问题,但我想知道用HAL格式呈现分页资源的最佳方式是什么?现在我正在使用Spring HATEOAS API将对象转换为资源

  • 考虑到我正在使用以下RESTful APIendpoint: /users/:显示所有用户 /users/$user_id/:显示特定用户 /users/$user_id/posts/:按用户显示所有帖子 /users/$user_id/posts/$post_id/:按用户显示特定帖子 这个数据模型中的约束:一篇文章总是有一个用户。 “处理嵌套资源”是指处理CRUD操作。 我应该在 /users

  • 在面向资源的API中,资源是命名实体,资源名称是资源的标识符。每个资源必须有其唯一的资源名称。资源名称由资源ID本身,父资源的ID和资源对应的API服务名称组成。在下文,我们将探讨资源ID和如何构建资源名称。 gRPC API应该使用无模式的URIs作为资源名称。它们通常遵循REST URL的惯例并且表现得更像网络文件路径。它们可以轻松的映射到REST URL上:细节请参考下一节标准方法。 资源组

  • 问题内容: 这个问题应该比关于更多。 我有一个子类(在python 2.7中,numpy 1.6.2),并且我发现在对象时未列出的字段名称(因此,ipython的自动完成功能无效)。 为了修复它,我尝试在子类中重写,如下所示: 结果是:。(我发现这里实际上应该在python 3.3中工作…) 作为一种解决方法,我尝试了: 据我所知,这是可行的,但当然并不优雅。 问题: 后一种解决方案对我而言是否正

  • 问题内容: 即使在使用Java Swing一年以上之后,对我来说,它仍然像魔术一样。如何正确使用BufferStrategy,尤其是方法? 我想添加一个JFrame和一个Canvas,然后进行绘制。我还希望能够调整()画布的大小。每次我调整Canvas的大小时,似乎都会被浪费掉,或者变得毫无用处,因为在上使用并没有真正做任何事情。另外,它具有怪异的不确定性行为,我不知道如何正确同步它。 这就是我的

  • 问题内容: 我想在Linux上使用该机制。我希望我的应用程序知道何时更改了文件。能否请您提供给我一个示例,该怎么做? 问题答案: 文档(来自具有inotify的Monitor文件系统活动) 在C API 提供了三个系统调用来构建各种文件系统监视器: 在内核中创建子系统的实例,并在成功和失败时返回文件描述符。与其他系统调用一样,如果失败,请检查诊断。 顾名思义,它增加了一块 手表 。每个监视都必须提