HTTP POST v / s HTTP GET

时间:2016-05-06 08:44:13

标签: angularjs node.js http post get

我想从前端(Angular)到后端进行数据库查询。但我需要为此发送大量参数。

据我了解,如果我们不进行任何数据库更改,最好使用GET,因为它使用缓存条目。如果我们需要在服务器/数据库上进行更改,则应使用POST。

但是如果我想发送许多参数(一些是序列化对象)并且不进行服务器端更改,那么在这种情况下使用POST请求是否正常并且在POST主体中嵌入所有参数而不是发送一个巨大的URL编码GET请求?

2 个答案:

答案 0 :(得分:1)

首先要清除它:responses to POST requests can be cached,只要原始服务器返回正确的缓存响应头。但是,浏览器和代理服务器通常不会将缓存应用于POST请求。

话虽这么说,通过正确的编码,您可以在查询字符串的~2 KB中存储很多信息,因此GET应该是最佳选择。

如果你确定你将超出GET请求的限制并且你需要在保持可缓存的情况下采用POST方式,你可以引入一种“nonce”,例如使用哈希值搜索参数:

  1. 客户端使用搜索参数对/search进行POST。
  2. 服务器将参数存储在某处,例如存储在数据库中。
  3. 服务器根据参数生成随机数,例如通过散列搜索参数或行ID。
  4. 服务器将客户端重定向到该随机数的结果页面:/search/123abc
  5. 客户请求/search/123abc搜索结果页。
  6. 服务器根据nonce执行搜索,并返回可缓存的响应。
  7. 这将引入一个额外的HTTP往返,但启用跨浏览器和代理服务器的缓存。

答案 1 :(得分:0)

我认为你应该在这种情况下使用post,这种情况更易于管理并且看起来很干净。有关帖子的更多好处,请点击以下链接: