本周早些时候,我不得不做一些感觉上像是语义违规的事情。让我解释一下。
我正在制作一个简单的 AJAX 客户端应用程序,它将向一个给定参数的服务发出请求。由于整个应用程序基本上是只读的,所以我认为使用 HTTP GET 是正确的方式。其中一些必须传递的参数很简单(例如排序顺序或页码)。
然而,其中一个必需的参数可能有可变长度,这让我担心。由于我将所有参数都编码到 GET 请求的查询字符串中,因此对于请求 URL,这似乎放置了一个不必要的大约2000个字符的上限。而且无论如何,我也不喜欢看到500个字符长的请求URL。
因此,由于 POST 请求没有这样的限制,我决定切换。但这感觉不对。我有这样的印象:POST 表示数据的修改,但我正在将其用于一个简单的只读请求。
有没有更好的方法来执行带有许多参数的GET请求?我听说过一种方法-首先执行参数本身的预备POST,然后再执行GET。但是,这种技术还有很多不足之处。
但是,忽略这个特定案例,HTTP请求方法的真实语义和限制是什么?为什么GET不支持任何类型的参数有效负载?在URL中使用查询字符串几乎感觉像是一个hack。
我正在制作一个简单的 AJAX 客户端应用程序,它将向一个给定参数的服务发出请求。由于整个应用程序基本上是只读的,所以我认为使用 HTTP GET 是正确的方式。其中一些必须传递的参数很简单(例如排序顺序或页码)。
然而,其中一个必需的参数可能有可变长度,这让我担心。由于我将所有参数都编码到 GET 请求的查询字符串中,因此对于请求 URL,这似乎放置了一个不必要的大约2000个字符的上限。而且无论如何,我也不喜欢看到500个字符长的请求URL。
因此,由于 POST 请求没有这样的限制,我决定切换。但这感觉不对。我有这样的印象:POST 表示数据的修改,但我正在将其用于一个简单的只读请求。
有没有更好的方法来执行带有许多参数的GET请求?我听说过一种方法-首先执行参数本身的预备POST,然后再执行GET。但是,这种技术还有很多不足之处。
但是,忽略这个特定案例,HTTP请求方法的真实语义和限制是什么?为什么GET不支持任何类型的参数有效负载?在URL中使用查询字符串几乎感觉像是一个hack。