我正在构建一个基于网络的报告工具,可以查询但不会更改大量数据。
为了验证报告查询,我使用表单进行输入验证。
我知道以下有关HTTP GET的信息:
以下情况如何?
我知道我可以很容易地使用POST并“破坏规则”,但是否存在明确的情况,其中推荐使用POST进行幂等请求?
另外,我通过AJAX提交表单,框架是Python / Django,但我认为不应该改变任何内容。
答案 0 :(得分:1)
我认为在这种情况下使用POST是可以接受的。引用HTTP 1.1 RFC
POST方法执行的操作可能不会导致 可以通过URI标识的资源。在这种情况下,要么200 (OK)或204(No Content)是适当的响应状态, 取决于响应是否包含实体 描述结果。
在您的情况下,"搜索结果"资源是在符合HTTP POST请求规范的服务器上创建的。您可以选择将结果资源作为响应返回,也可以作为单独的URI返回刚刚创建的资源,并且可以删除,因为在一分钟的时间后不再需要结果资源(即,当您说数据每次更改时)一分钟。
The data being reported changes every minute
每次发出请求时,都会根据您的上述语句创建新资源。
此外,您可以返回201
状态和URL以检索搜索结果资源,但我不确定您是否需要此类行为,但我只是提供了旁注。
第一个问题的第二部分说明结果不得缓存。这是你在服务器上配置的东西,用于返回必要的HTTP头,以强制中间代理和客户端不缓存结果,例如If-Modified-Since
,Cache-control
等。
由于URL字符限制,您必须使用POST请求而不是GET请求,因此您的第二个问题已经得到解答。