欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring boot POST/GET请求的参数校验

程序员文章站 2024-01-20 19:40:28
...

Spring boot POST/GET请求的参数校验

SpringBoot提供的获取参数注解包括:@PathVariable,@RequestParam,@RequestBody
三者的区别:
Spring boot POST/GET请求的参数校验

1.

@PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值
Spring boot POST/GET请求的参数校验

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:
Spring boot POST/GET请求的参数校验
controller可以直接copy,实体类根据自己业务做修改,这里只是一个简单案例,还有其它用法如下:
Spring boot POST/GET请求的参数校验

相关标签: JAVA java