我想从前端(Angular)到后端进行数据库查询。但我需要为此发送大量参数。
据我了解,如果我们不进行任何数据库更改,最好使用GET,因为它使用缓存条目。如果我们需要在服务器/数据库上进行更改,则应使用POST。
但是如果我想发送许多参数(一些是序列化对象)并且不进行服务器端更改,那么在这种情况下使用POST请求是否正常并且在POST主体中嵌入所有参数而不是发送一个巨大的URL编码GET请求?
答案 0 :(得分:1)
首先要清除它:responses to POST requests can be cached,只要原始服务器返回正确的缓存响应头。但是,浏览器和代理服务器通常不会将缓存应用于POST请求。
话虽这么说,通过正确的编码,您可以在查询字符串的~2 KB中存储很多信息,因此GET应该是最佳选择。
如果你确定你将超出GET请求的限制并且你需要在保持可缓存的情况下采用POST方式,你可以引入一种“nonce”,例如使用哈希值搜索参数:
/search
进行POST。/search/123abc
。/search/123abc
搜索结果页。这将引入一个额外的HTTP往返,但启用跨浏览器和代理服务器的缓存。
答案 1 :(得分:0)