SpringBoot 参数接收只看这一篇文章就够了
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
好久没有写过接口了最近在写一些基础接口在写参数接口接收参数的时候居然想不起来会有那么一丝丝的怀疑虽然并不会影响编码但是说明一个问题没有系统的总结知识没有温故知新整理一下分享下。
1、路径参数 @PathVariable
1.1 基础使用
通过@PathVariable可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable("xxx")
举个栗子
@GetMapping("park/{parkingId}")publicStringqueryPark(@PathVariableStringparkingId){returnparkingId;}
访问路径http://localhost:8080/park/123
这里123 会被绑定到 parkingId
1.2 注意点
Spring能够根据名字自动赋值对应的函数参数值
注解的参数可以是一些基本的简单类型intlongDateString等
Spring能根据URL变量的具体值以及函数参数的类型来进行转换
2、@RequestParam
2.1 基础使用
注解@RequestParam绑定请求参数到方法形参适用keyvalue的方式同时适用get、post方法。
举个栗子
@RequestMapping("park/requestParam")
public String query1(@RequestParam String parkingId){
return parkingId;
}
post在使用的时候可以使用表单提交也就是form-data的方式
也可以使用get的方式访问 http://localhost:8080/park/requestParam?parkingId=xxx
2.2 注意点
同时使用get,post
参数必须是keyvalue的形式
没有生命变量名的时候默认参数名当做key值
3、@RequestBody
3.1 基本使用
RequestBody主要用来接收前端传递给后端的json字符串中的数据(请求体中的数据的)
举个栗子
@PostMapping("park/add")
public Result addApply(@RequestBody ApplyInfoDto applyInfoDto){
return Result.success();
}
访问路径http://localhost:8080/park/list/add
3.2 注意点
一个请求只有一个RequestBody
content-type必须是application/json
只适用post的方式
4、HttpServletRequest参数接收
4.1 基础使用
http请求对象HttpServletRequest中的数据要么通过流json请求时或者参数的形式form表单向后台传输数据
举个栗子
@RequestMapping("park/request/{da}")
public String query2(HttpServletRequest request) throws IOException {
// key-value 类型
Map<String, String[]> map = request.getParameterMap();
// 路径参数
String pathInfo = request.getPathInfo();
// body内容
ServletInputStream inputStream = request.getInputStream();
return "111";
}
4.2 注意点
HttpServletRequest 是整个请求可以获取到所有的数据
HttpServletRequest 可以和其他的注解配合适用
HttpServletRequest、HttpServletResponse都是内置对象可以使用
5、@RequestHeader
5.1 基础使用
RequestHeader主要用来获取请求当中的请求头
// 方式1获取单个header属性
@RequestMapping("/geteHeader")
public void getHeader(@RequestHeader("user-id") String userId){
}
//方式2获取所有header属性
@RequestMapping("/geteHeader")
public void getHeader(@RequestHeader Map<String, String> headers){
}
//方式3 获取header对象
@RequestMapping("/geteHeader")
public void getHeader(@RequestHeader HttpHeaders headers){
}
6、@CookieValue
使用@CookieValue注解来获得指定的 Cookie 的值。
@GetMapping("park/getCookie")
public String getCookieValue(@CookieValue("jid") String jId) {
System.out.println(jId);
return "success";
}
7、不基于任何注解进行表单传参
不基于任何注解进行表单传参springboot会根据变量名进行赋值
@RequestMapping("park/nothing")
public String getByNothing( String parkingId) {
System.out.println(parkingId);
return "success";
}
注key-value的方式可以
8、总结
springboot接口参数的接收没什么特殊的地方归纳一下
前端数据的输入方式路径参数key-value的方式还有就是raw的模式这里主要是jsonHeaderCookie
后端的主要注解PathVariableRequestParamRequestBody 直接和上面的三种方式对应
可使用的内置对象HttpServletRequestHttpServletResponseHttpHeaders