品牌型号:联想ThinkPad X1
系统:Windows10家庭版
软件版本:Spring 5.3.7
前后端分离已经是现在大多数项目主流的一种架构,我们用Spring Boot做后端框架,经常要接收前端传过来的数据,GET请求的参数拼在URL里还好说,处理POST请求的时候就相对复杂一些。Post请求有表单提交、JSON请求体、文件上传,这几种方式不一样,后端对应的接收写法也不同。很多人在这里吃过亏,前端数据明明发过去了,后端怎么都拿不到,反复检查代码也看不出哪里有问题,后来才发现是接收方式和传参格式对不上。下面就给大家介绍一下Spring Boot怎么获取前端数据,Spring Boot怎么获取Post请求参数的相关内容。
一、Spring Boot怎么获取前端数据
Spring Boot获取前端数据的时候,前端不同的传参方式对应我们后端不同的接收写法,像前端GET请求的参数是拼在URL后面时,例如/api/user?id=1,我们后端可以用@RequestParam注解来接,方法参数里加上@RequestParam("id") Integer id,Spring会自动把URL里对应的值取出来赋进去。

如果参数名和变量名完全一致,注解里的名称可以省略不写,框架会自动按名称匹配。参数比较多的时候也可以用实体类接收,把字段名对应上,不需要加额外注解,Spring会自动填值。
路径参数是RESTful接口里常见的一种传参方式,地址会写成/api/user/{id}这样的格式,那我们后端接收的时候用@PathVariable来取就行。

请求头里的数据用@RequestHeader来接收,比如需要从请求头里取token做鉴权,直接在参数上加这个注解就能拿到对应字段的值,不需要手动去解析HttpServletRequest。

如果这些注解都满足不了需求,我们可以直接在方法参数里声明HttpServletRequest对象,Spring会自动注入,通过getParameter或者getHeader方法手动获取任意数据。

二、Spring Boot怎么获取Post请求参数
POST请求传参的方式有三种:表单提交、JSON请求体和文件上传。我们在处理表单提交时,前端Content-Type是application/x-www-form-urlencoded,我们后端就用@RequestParam来接收,写法跟GET请求的查询参数基本一样。参数少的时候直接在方法参数里逐个声明,参数多的话用实体类接收更合适,字段名对应上就行,不需要额外加注解。

目前前后端分离项目里POST传参方式很多都用JSON,前端把数据序列化成JSON放在请求体里发过来,Content-Type设置为application/json,后端用@RequestBody注解来接收。在方法参数上添加@RequestBody,并搭配对应实体类,Spring会自动把JSON反序列化成对象,字段值直接就能用。

文件上传的POST请求Content-Type是multipart/form-data,接收的时候用MultipartFile类型的参数,配合@RequestParam指定字段名,单文件上传声明一个MultipartFile,多文件用List

还有一种情况是POST请求里同时包含普通参数和文件,这时候@RequestParam和MultipartFile可以混着用,我们分别声明各自对应的参数,Spring能同时处理,不会冲突。

以上就是Spring Boot怎么获取前端数据,Spring Boot怎么获取Post请求参数的全部内容了。在获取前端数据的时候GET请求用@RequestParam或者@PathVariable,请求头数据用@RequestHeader,实在不够用了我们再考虑HttpServletRequest。POST这边稍微复杂一点,表单提交就用@RequestParam,JSON请求体的话用@RequestBody,文件上传对应MultipartFile,三种方式分别处理自己的场景。