返回介绍

HTTP 请求传参方式

发布于 2023-12-27 21:55:42 字数 5283 浏览 0 评论 0 收藏 0

一. Query Parameters

参数会以 url string 的形式进行传递,即?后的字符串则为其请求参数,并以&作为分隔符。常用在 GET 请求方式时使用。 其他请求方式也可以使用,拼接在接口地址 url? 后面。

二. Form Data

Content-typeapplication/x-www-form-urlencoded;charset=utf-8 时,参数会以 Form Data 的形式(数据为 String 键值对格式)传递给接口,并且不会显示在接口 url 上。

本质上FormData数据存放的位置也是在HTTP请求报文的Body区域上,只不过它的数据格式与Query Parameter一样通过&连接多个参数,具体请求报文如下:

POST /some-path HTTP/1.1
Content-Type: application/x-www-form-urlencoded

foo=bar&name=John

Chrome浏览器的显示效果:

需要注意的是,Form Data数据也位于Http的Body上,但是Java EE的ServletRequest对于QueryForm Data两种形式的传参获取的API是一模一样的,都可以通过javax.servlet.ServletRequest#getParameterMap获取到值,虽然这两者请求参数在HTTP报文中的位置并不相同。这也是为什么你对Java程序员说body传参,他们会默认认为采用application/json传参,而不是Form Data传参。

对应到SpringMVC框架,如果你使用QueryForm Data传参后端处理方式相同,而如果你采用application/json传参,后端需要加上@RequestBody注解获取参数值。

三. Request Payload

Content-typeapplication/json;charset=utf-8 时,参数会以 Request Payload 的形式(数据为 json 格式)传递给接口,并且不会显示在接口 url 上。

POST /some-path HTTP/1.1
Content-Type: application/json

{ "foo" : "bar", "name" : "John" }

Request Payload传参示例:

这也是后端(Java)常说的Body传参形式,因为在SpringMVC框架中Query ParametersForm Data传参的处理过程完全一样,而Request Payload传参需要将加上@RequestBody注解

本文参考至:

前后端联调之Form Data与Request Payload,你真的了解吗? - SegmentFault 思否

HTTP 请求参数之三种格式 (juejin.cn)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文