根据许多像这样的帖子,带有正文的 GET 请求并不常见。
另一方面,REST 中的最佳实践之一是仅当我们想要对资源进行更改时使用 POST,而当我们只想检索资源时使用 GET。
所以我的问题是获取具有非常大有效负载的资源的首选方式是什么?即使我实际上没有更改任何内容,我是否应该优先考虑 HTTP 最佳实践并将 POST 与正文一起使用,或者坚持 RESTFUL 实践并将 GET 与正文一起使用?
在这种情况下,“HTTP 最佳实践”和“RESTFUL 实践”是相同的:在请求正文中使用 GET 方法令牌是不好的做法。
仅当我们想要对资源进行更改时才使用 POST
这不太正确- 请注意使用 POST 是可以的(Fielding,2009)。粗略总结一下,POST 是约束最少的 HTTP 方法。我们总是可以使用它,但当请求的语义符合约束时,我们应该更喜欢使用更具体的方法。
为了获取资源的表示,我们更喜欢使用 GET,因为这样可以最好地将请求的语义传达给通用 HTTP 组件,以便它们可以正确解释请求的语义并执行有用的操作。
但这取决于能否使用请求行中的信息完全识别资源。如果您的标识符太长,那么这将不起作用,您需要转而使用 POST,将“标识符”复制到请求正文中。
这“有效”,但代价是通用组件不会知道 GET 约束仍然适用,因此无法执行任何智能操作(如果响应丢失,则自动重试,缓存结果) , 等等)。
2020 年底,HTTP-WG 通过了一项提案,为新方法令牌创建标准,该方法令牌将充当“带正文的 GET”。因此,在某个时候,我们应该开始看到注册的标准和一致的实现等等。
归档时间: |
|
查看次数: |
10824 次 |
最近记录: |