我理解GET和POST的定义如下。
GET:列出集合的成员,并使用其成员URI进行进一步导航。例如,列出所有待售的汽车。
POST:在集合中创建一个新条目,集合自动分配ID。创建的ID通常包含在此操作返回的数据中。
我的API在服务器中使用JSON消息搜索具有巨大请求负载的一些细节,在这种情况下我应该使用哪个动词?
也有人可以告诉我可以在查询字符串中传递的字符的长度。
答案 0 :(得分:9)
GET和POST请求之间的主要区别在于,在前者中,整个请求被编码为URL本身的一部分,而在后者中,参数在头之后发送。此外,在GET请求中,不同的浏览器会对URL的大小施加不同的限制。大多数现代浏览器至少允许200KB,但Internet Explorer似乎将URL大小限制为2KB。
话虽如此,如果您怀疑您将传递大量参数,这些参数可能超过接收Web服务器对GET请求施加的限制,则应切换到POST。
Here is a site调查了大多数现代浏览器的GET行为,值得一读。
答案 1 :(得分:4)
派对迟到了,但是对于任何寻找解决方案的人来说,这可能会有所帮助。
我想出了两种不同的策略来解决这个问题。我将创建概念证明API并测试哪一个更适合我。以下是我目前正在考虑的解决方案:
<强> 1。 X-HTTP-方法-替代:强>
基本上我们会使用POST / PUT方法隧道传输GET请求,并添加 X-HTTP-Method-Override 请求标头,以便服务器将请求路由到GET调用。操作简单,一次完成。
<强> 2。划分和规则:
将请求分为两个单独的请求。发送包含所有有效负载的POST / PUT请求,服务器将创建必要的响应并将其与密钥/ id一起存储在cache / db中以访问数据。然后服务器将使用&#34;位置&#34;标头或Key / id,通过它可以访问存储的响应。
现在发送GET请求,其中包含服务器在之前的POST请求中给出的密钥/位置。实现起来有点复杂,需要两个请求,还需要一个单独的策略来清理缓存的响应。
答案 2 :(得分:3)
如果这是您的API的典型情况,那么RESTful方法可以将查询数据POST到缓冲区端点,该端点返回一个URI,您可以从中获取结果。
谁知道这些缓存可能会减少发送“巨大” blob数据的需要。
答案 3 :(得分:0)
您可以使用两者通过将某些数据传递到服务器来从服务器获取结果
如果是一个或两个参数,例如Id
此处仅使用一个参数。但是可以使用3到4个参数这是我在 angularjs
中的使用方式首选:获取
Example : $http.get('/getEmployeeDataById?id=22');
如果是大Json对象
首选:发布
Example : var dataObj =
{
name : $scope.name,
age : $scope.age,
headoffice : $scope.headoffice
};
var res = $http.post('/getEmployeesList', dataObj);
And For Size Of Characters That Can Be Passed In Query String Here Is Already Answered
答案 4 :(得分:-4)
如果您从服务器获取数据,请使用GET。如果您想发布某些内容,请使用POST。有效载荷大小是无关紧要的。如果您想使用较小的有效负载,则可以实现分页。