http请求参数之Query String Parameters、Form Data、Request Payload

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http请求参数之Query String Parameters、Form Data、Request Payload相关的知识,希望对你有一定的参考价值。

参考技术A 当发起一次GET请求时,参数会以url string的形式进行传递。即 ? 后的字符串则为其请求参数,并以 & 作为分隔符。

如下http请求报文头:

当发起一次POST请求时,若未指定content-type,则默认content-type为application/x-www-form-urlencoded。即参数会以Form Data的形式进行传递,不会显式出现在请求url中。

如下http请求报头:

当发起一次POST请求时,若content-type为application/json,则参数会以Request Payload的形式进行传递(显然的,数据格式为JSON),不会显式出现在请求url中。

如下http请求报头:

如果希望通过Form Data的方式来传递数据,则可以通过原生方法 formData() 来进行数据组装,且content-type需要设置为multipart/form-data。

如下http请求报头:

其中, WebKitFormBoundaryAIpmgzV8Ohi99ImM 为浏览器随机生成的 boundary ,作为分隔参数,作用等同于 & 。

multipart/form-data 的优势还伴随一些兼容性问题,详细请参考文章结束的参考文献。

https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1
https://developer.mozilla.org/en-US/docs/Web/API/FormData
https://www.cnblogs.com/ChengWuyi/p/7117060.html
http://www.cnblogs.com/zourong/p/7340498.html
https://tools.ietf.org/html/draft-ietf-httpbis-p3-payload-14#section-3.2
https://stackoverflow.com/questions/23118249/whats-the-difference-between-request-payload-vs-form-data-as-seen-in-chrome
https://stackoverflow.com/questions/3508338/what-is-the-boundary-in-multipart-form-data

以上是关于http请求参数之Query String Parameters、Form Data、Request Payload的主要内容,如果未能解决你的问题,请参考以下文章

HTTP请求中的form data,request payload,query string parameters以及在node服务器中如何接收这些参数

http GET 请求的参数怎么传递,放在body里用json形式后台request读流获取不到数据。

Express之get,pos请求参数的获取

如何从 Chrome 扩展程序发送 HTTP GET 请求?

【Android】Retrofit网络请求参数注解,@Path、@Query、@QueryMap...

如何获取PUT请求中放在body里面的参数