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