Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs HTTP POST v/s HTTP GET_Angularjs_Node.js_Http_Post_Get - Fatal编程技术网

Angularjs HTTP POST v/s HTTP GET

Angularjs HTTP POST v/s HTTP GET,angularjs,node.js,http,post,get,Angularjs,Node.js,Http,Post,Get,我想从前端(角度)到后端进行数据库查询。但我需要为此发送很多参数 据我所知,如果我们不进行任何数据库更改,最好使用GET,因为它使用缓存条目。如果我们需要在服务器/DB上进行更改,应该使用POST 但是,如果我想发送许多参数(一些是序列化对象)并且不进行服务器端更改,那么在这种情况下使用POST请求并将所有参数嵌入POST正文中,而不是发送一个巨大的URL编码的GET请求,可以吗?我认为在这种情况下应该使用POST,因为它更易于管理并且看起来更干净。要获得更多便利,请点击以下链接: 首先清

我想从前端(角度)到后端进行数据库查询。但我需要为此发送很多参数

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


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

我认为在这种情况下应该使用POST,因为它更易于管理并且看起来更干净。要获得更多便利,请点击以下链接:

首先清除此问题:,只要源服务器返回正确的缓存响应头。但是,浏览器和代理服务器通常不会对POST请求应用缓存

也就是说,通过正确的编码,您可以在~2kb的查询字符串中存储大量信息,因此GET应该是一种方法

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

  • 客户端使用搜索参数发送到
    /search
  • 服务器将参数存储在某个位置,例如数据库中
  • 服务器从参数生成nonce,例如通过哈希搜索参数或行ID
  • 服务器将客户端重定向到该临时值的结果页:
    /search/123abc
  • 客户端请求
    /search/123abc
    搜索结果页面
  • 服务器基于nonce执行搜索,并返回可缓存的响应

  • 这将引入一个额外的HTTP往返,但允许跨浏览器和通过代理服务器进行缓存。

    “更易于管理且看起来更干净”并不是您在构建软件时真正需要的正确定义的属性,以及。请明确解释为什么POST比GET“更易于管理”。在你的情况下,你可以同时使用GET和POST。从你的问题来看,你似乎对GET和POST有很好的了解,但我只是根据我的经验给出了我的观点。我说的可管理是指任何时候都可以轻松地更改字段名,不必为get请求创建大字符串,而我说的clean是指代码中不会有大而难看的请求字符串。另外,我可能在评论部分给出了我的答案,但我现在不能这样做。让我知道你的想法。谢谢,好办法。这也给了我一个不同的想法。使用btoa()对参数的字符串化对象进行编码,并在GET请求中将编码后的数据作为param发送。在服务器上,解码参数并解析参数,完成任务。这样如何?这将为我们节省一次往返,这是您方法中的一个警告。是的,当然额外的往返是一个缺点,但它可以实现您想要的:响应可缓存的大型请求。如何正确地编码搜索参数是一个完全不同的问题,这在很大程度上取决于这些参数的性质。许多字符串和数字不能很好地编码成较小的格式,而许多布尔值可以。