Spring boot POST/GET请求的参数校验
程序员文章站
2024-01-20 19:40:28
...
Spring boot POST/GET请求的参数校验
SpringBoot提供的获取参数注解包括:@PathVariable,@RequestParam,@RequestBody
三者的区别:
1.
@PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值
2.
@RequestParam
@RequestMapping(value = "/test", method = RequestMethod.GET)
public Msg recommend(@RequestParam String uid,
@RequestParam String devId,
@RequestParam Integer channel,
@RequestParam(value="size",required = false, defaultValue = "5") Integer size,
@RequestParam(value="miniPrice",required = false, defaultValue = "0.0") Float miniPrice,
@RequestParam(value="highPrice",required = false, defaultValue = "0.0") Float highPrice,
@RequestParam(value="miniDiscount",required = false, defaultValue = "0.0") Float miniDiscount,
@RequestParam(value="highDiscount",required = false, defaultValue = "1.0") Float highDiscount,
@RequestParam(value="logId",required = false, defaultValue = "12345") String logId) {
其中,required = false表示该字段允许不传值,defaultValue表示不传值时的默认值
3.
@RequestBody
对于这种参数获取,可以使用@Valid注解进行参数校验
controller:
@RequestMapping(value = "/test", method = RequestMethod.POST)
public Msg saveEmp(@RequestBody @Valid Goods goods, BindingResult result) {
if (result.hasErrors()) {
// 校验失败,在模态框中显示校验失败的错误信息
Map<String, Object> map = new HashMap<>();
List<FieldError> errors = result.getFieldErrors();
for (FieldError fieldError : errors) {
System.out.println("错误的字段名:" + fieldError.getField());
System.out.println("错误信息:" + fieldError.getDefaultMessage());
map.put(fieldError.getField(), fieldError.getDefaultMessage());
}
// 把错误信息返回给浏览器
return Msg.fail().add("errorField", map);
} else {
// 校验成功
// employeeService.saveEmp(employee);
return Msg.success();
}
Msg类:
public class Msg {
// 状态码,100成功,200失败
private int code;
// 提示信息
private String msg;
// 用户要返回给浏览器的数据
private Map<String, Object> extend = new HashMap<String, Object>();
public static Msg success(){
Msg res = new Msg();
res.setCode(200);
res.setMsg("处理成功!");
return res;
}
public static Msg fail(){
Msg res = new Msg();
res.setCode(201);
res.setMsg("处理失败!");
return res;
}
public Msg add(String key, Object value){
this.getExtend().put(key, value);//链式调用设计模式
return this;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Map<String, Object> getExtend() {
return extend;
}
public void setExtend(Map<String, Object> extend) {
this.extend = extend;
}
}
pojo:
controller可以直接copy,实体类根据自己业务做修改,这里只是一个简单案例,还有其它用法如下:
上一篇: 数据库的索引
下一篇: Nginx——nginx安装及使用(一)
推荐阅读
-
Spring boot POST/GET请求的参数校验
-
spring boot中post请求接收参数
-
Kotlin + Spring Boot 请求参数验证的代码实例
-
Spring Boot实现通用的接口参数校验
-
Spring boot进行参数校验的方法实例详解
-
Spring Boot实现通用的接口参数校验
-
Spring boot进行参数校验的方法实例详解
-
Spring Boot 参数校验的具体实现方式
-
记录spring-cloud-gateway获取post请求body参数,以及后端服务处理后的响应参数过程 gateway:2.2.0.RELEASE
-
spring boot拦截器中获取request post请求中的参数