HTTP四大参数类型及请求参数的方式和如何接收

HTTP 请求中4大参数类型和接收方法。

1、请求头参数head

请求头参数顾名思义,是存放在请求头中发送给服务器的参数,服务器通过解析请求头获取参数内容。通常会存放本次请求的基本设置,以帮助服务器理解并解析本次请求的body体。 参数形式如:

复制代码
Accept-Language : zh-CN,zh;q=0.8,zh-TW;q=0.5,en-US;q=0.3,en;q=0.2

在我们的SpringBoot中,通过@RequestHeader注解可以获取到。
Spring Boot 读取http headers内容

2、路径参数path

路径参数顾名思义,本次请求的资源路径,紧跟请求域名的后面,服务器通过解析路径参数获取资源位置。路径参数是用/分隔的一系列字符串,其意义在于对服务器资源进行统一定位,如:

SpringBoot接收:
@PathVariabel注解的形参名字要与路径参数形参名字相等

不相等就用 value值来与路径参数名字相等。

3、查询参数query

Query代表请求的参数,URL以?key=value的形式呈现,例如:
http://localhost:8080/api/v1/namespaces?pretty=true 中 pretty=true就是query

SpringBoot接收

get请求只能传query参数,query参数都是拼接在请求地址上的。

4、请求体参数body

请求体参数顾名思义,是存放在请求体(在HTTP协议中用于传输客户端向服务器发送的数据的部分)中发送给服务器的参数。请求体参数格式复杂多变,服务器会先根据请求头中的 Content-Type 获取其格式,然后再根据其格式进行解析,常见的格式如下:

Get请求只能传Query参数,POST可以传Query和Body(常用)两种形式的参数。
Query的值只能是一个字符串,不能传递对象类型的参数,如果参数中涉及到了传递对象,就要选择Body传参,一般json等都是Body传参

SpringBoot接收

使用注解@RequestBody,接收json数据

关于接收参数三个注解的区别

@RequestBody、@RequestParam、@PathVariable

- 区别

  1. @RequestParam用于接收url地址传参或表单传参
  2. @RequestBody用于接收json数据
  3. @PathVariable用于接收路径参数,使用{参数名称}描述路径参数

- 应用

  1. 后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
  2. 如果发送非json格式数据,选用@RequestParam接收请求参数
  3. 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值

@RequestBody的详细使用
@RequestBody的使用

学习来自

https://juejin.cn/post/7291466545305829376#heading-8

相关推荐
a努力。几秒前
国家电网Java面试被问:混沌工程在分布式系统中的应用
java·开发语言·数据库·git·mysql·面试·职场和发展
Yvonne爱编码2 分钟前
Java 四大内部类全解析:从设计本质到实战应用
java·开发语言·python
J2虾虾15 分钟前
SpringBoot和mybatis Plus不兼容报错的问题
java·spring boot·mybatis
毕设源码-郭学长1 小时前
【开题答辩全过程】以 基于springboot 的豪华婚车租赁系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
Tao____3 小时前
通用性物联网平台
java·物联网·mqtt·低代码·开源
曹轲恒3 小时前
SpringBoot整合SpringMVC(上)
java·spring boot·spring
济6173 小时前
linux 系统移植(第十七期)---Linux 内核移植(5)-- 修改网络驱动(2)--- Ubuntu20.04
linux·运维·网络
JH30734 小时前
Java Spring中@AllArgsConstructor注解引发的依赖注入异常解决
java·开发语言·spring
码农水水4 小时前
米哈游Java面试被问:机器学习模型的在线服务和A/B测试
java·开发语言·数据库·spring boot·后端·机器学习·word
2601_949575864 小时前
Flutter for OpenHarmony二手物品置换App实战 - 表单验证实现
android·java·flutter