HTTP TAG - 带正文的“GET”或“POST”来获取数据?

问题描述 投票:0回答:1

我正在构建一个Web API,我有一个方法,其目的是将数据获取到屏幕,并且该方法有很多参数,因此为了简化和方便我的代码,我只是向该方法添加了一个对象,并且现在我的 get 方法有了主体。我读到在 get 请求中包含主体是错误的。但是,如果我将此方法更改为“post”,它将无法履行其职责,因为我没有更改数据库或类似内容中的任何内容,我只是将数据带到屏幕上。

针对我的情况,最好的选择是什么?

rest http tags webapi
1个回答
1
投票

针对我的情况,最好的选择是什么?

今天,您的最佳选择是将需要发送到服务器的信息表达在资源的标识符内,并使用GET。要获得灵感,请考虑“网络搜索表单”。

当这不可能时(服务器程序员的方便是一个弱借口,但有时信息量意味着标识符超出了网络的实际长度限制),那么您应该使用 POST。 参见菲尔丁 2009

POST 在 HTTP 中具有许多有用的用途,包括“此操作不值得标准化”的一般用途。

本质上,所有其他 HTTP 方法都是 POST 的特化,可用于表达存在额外约束的事实。

因此,当其他选项不合适时,您始终可以退回到 POST。


在未来的某个时刻,QUERY(又名 GET-with-a-body)将成为注册的 HTTP 方法,这将非常适合您的需求。

(一些接近该行动的人表示,现在开始使用 QUERY 方法是“安全的”;但我们还没有发布的标准,令牌尚未注册,标准的最新草案已过期几个月前,所以我自己提出这个建议不太舒服。)

© www.soinside.com 2019 - 2024. All rights reserved.