【问题标题】:GET vs. POST when the request is some arbitrary size当请求是任意大小时,GET 与 POST
【发布时间】:2022-08-24 01:57:00
【问题描述】:

我了解 GET 与 POST 的语义,一个端点应该获取数据,另一个应该发布它。后者是您可能不希望用户能够轻松重播的请求。

也就是说,在我目前正在进行的项目中 - 方法是 POST 到明确负责响应数据的端点,并且这些端点不会以任何方式转换数据。

这背后的原因是有效载荷(可能)相当大,并且似乎更适合于正文而不是查询字符串.

任何人都可以阐明哪个请求适合需要大量请求有效负载的 GET 请求吗?我不是在征求意见,我是在问什么符合 RESTful 设计。

进一步的背景

该请求可能很大,因为它是来自 UI 的搜索 DTO,用户可以选择传递任意数量的过滤器或搜索词。

    标签: api rest http post get


    【解决方案1】:

    任何人都可以阐明哪个请求适合需要大量请求有效负载的 GET 请求吗?我不是在征求意见,我是在问什么符合 RESTful 设计。

    今日回复:It's OK to use POST.

    对于fundamentally read-only 的请求,我们会喜欢使用标准化的 HTTP 语义将其传达给通用组件,以便它们自己可以做智能的事情。

    但是:GET 虽然既是safe 又无处不在,但当您需要在请求中包含消息正文时,这不是一个合适的选择:

    GET 请求中接收的内容没有一般定义的语义

    因此,如果您出于某种原因不能将所需的信息复制到资源标识符中,那么 GET 就不是一种选择。

    现在,如果您的有效负载与 WebDAV 一致,那么您也许可以使用这些规范中描述的安全方法之一。但是,据我所知,它们并不适合一般用途。


    明天的答案:HTTP-WG 接受了safe-method-with-body 的提案。所以我们最终应该期望看到一个安全的registered HTTP method,它已经为请求内容定义了语义。

    然后,根据这些语义是什么,我们也许可以将它用于像您这样的请求。

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 2020-07-01
      • 2014-01-30
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多