请求从query或body传参数的区别

请求位置不同

  • Query 参数(查询参数)
  • Query 参数是附加在 URL 后面的参数,通过?&符号与 URL 的路径部分分隔。例如,https://example.com/api/users?id=123&name=John,这里的id=123name=John就是 Query 参数。
  • 这种方式主要用于传递一些简单的、非敏感的信息,如搜索关键词、分页参数(页码、每页数量)等。因为这些参数会直接显示在 URL 中,用户可以看到并方便地修改,同时搜索引擎也可能会索引这些参数,这在一定程度上有利于资源的发现。
  • Body 参数(请求体参数)
  • Body 参数则是包含在 HTTP 请求的消息体(body)中。对于不同的 HTTP 请求方法(如 POST、PUT 等),请求体的格式可以不同,常见的有application/jsonapplication/x - www - form - urlencodedmultipart/form - data等。
  • 它通常用于传递更复杂的数据结构或者大量的数据,如提交一个表单数据(包含多个字段)、上传文件或者传递一个包含多个嵌套对象的 JSON 数据等。由于请求体内容不会直接显示在 URL 中,相对来说更适合传递敏感信息,如用户密码(当然,实际应用中密码通常会经过加密处理)。

数据大小限制不同

  • Query 参数
  • 由于 URL 长度是有一定限制的,不同的浏览器和服务器对 URL 长度的限制不同,但一般来说不能太长。例如,Internet Explorer 对 URL 长度限制在大约 2083 个字符左右。这就限制了 Query 参数所能携带的数据量,通常只适合传递少量的数据。
  • Body 参数
  • 对于请求体中的数据,一般没有像 URL 长度那样严格的固定限制,不过实际应用中会受到服务器配置、网络带宽和性能等因素的限制。理论上可以传递的数据量比 Query 参数大得多,更适合用于传递大量的数据,如文件上传场景中可以上传几 MB 甚至更大的文件。

数据格式不同

  • Query 参数
  • Query 参数的格式比较简单,通常是key=value的形式,多个参数之间用&连接。值一般是简单的字符串类型,虽然可以对值进行编码(如 URL 编码)来传递一些特殊字符,但整体格式仍然相对简单。
  • Body 参数
  • 如前面所述,Body 参数的格式取决于Content - Type头信息。如果是application/json格式,数据可以是复杂的 JSON 对象或数组,能够表示多层次的嵌套结构,如{"user":{"name":"John","age":30,"address":{"city":"New York","street":"123 Main St"}}}。如果是application/x - www - form - urlencoded格式,类似于 Query 参数的格式,但是在请求体中,并且可以传递更多的数据量。而multipart/form - data格式主要用于文件上传和包含文件的表单数据提交。

安全性不同

  • Query 参数
  • 因为 Query 参数会直接显示在 URL 中,所以安全性相对较低。如果传递敏感信息(如密码、用户的隐私数据等),很容易被用户看到或者在网络传输过程中被截取(虽然可以通过使用 HTTPS 加密来提高安全性,但信息仍然会在浏览器的地址栏等位置显示)。
  • Body 参数
  • Body 参数在请求体中,不会直接暴露在 URL 中,相对来说更安全一些。不过这并不意味着就可以不进行安全防护,在处理 Body 参数时,仍然需要进行数据验证、加密(如对密码等敏感数据加密)等安全措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YQ9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值