首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP GET vs POST for Idempotent

HTTP GET vs POST for Idempotent
EN

Stack Overflow用户
提问于 2016-03-23 21:18:33
回答 1查看 183关注 0票数 0

我正在构建一个基于web的报告工具,它可以查询,但不会改变的大量数据。

为了验证报告查询,我使用一个表单进行输入验证。

我了解以下关于HTTP的知识:

  1. 它应该用于幂等请求。
  2. 浏览器可以缓存重复的请求。

,下面的情况如何?

  1. 报告的数据每分钟更改一次,不能缓存。
  2. 查询字符串非常大,并且大于2000字符的URL限制?

我知道我可以很容易地使用POST和“破坏规则”,但是有一些明确的情况,在这种情况下,推荐POST用于幂等请求

另外,我是通过AJAX提交表单的,框架是Python/Django,但我不认为这会改变任何事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-23 22:07:01

我认为在这种情况下使用POST是可以接受的。引用HTTP 1.1 RFC

POST方法执行的操作可能不会导致可以由URI标识的资源。在这种情况下,200 (OK)或204 (无内容)是适当的响应状态,这取决于响应是否包括描述结果的实体。

在您的示例中,将在符合HTTP请求规范的服务器上创建“搜索结果”资源。您可以选择将结果资源作为响应返回,也可以选择将结果资源作为单独的URI返回到刚刚创建的资源,并且可能会被删除,因为结果资源在一分钟后不再需要(也就是说,正如您所说的,数据每隔一分钟更改一次)。

The data being reported changes every minute

每次提出请求时,它都将根据上述语句创建新的资源。

此外,您可以返回201状态和一个URL来检索搜索结果资源,但是我不确定您是否想要这种行为,但我只是附带说明。

第一个问题的第二部分说,结果不能缓存。这是您在服务器上配置的东西,可以返回必要的headers,以强制中间代理和客户端不缓存结果,例如,使用If-Modified-SinceCache-control等。

您的第二个问题已经回答了,因为您必须使用POST请求而不是GET请求,因为URL字符限制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36188866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档