SpringBoot中Controller层请求与响应

1 Controller请求

1.1 简单请求

发送简单请求给Springboot项目时,只需要通过声明数据类型和对应的形参名就能接收到请求过来的数据。

简单参数:如果方法形参名称与请求参数名称不匹配,可以使用@RequestParam完成映射。

@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。如果该参数是可选的,可以将required属性设置为false。

1.2 实体参数

简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可

复杂实体对象:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数。

1.3 数组集合参数

数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数。

场景:多选框选择的参数,装到数组中。

集合参数:请求参数名与形参集合名称相同且请求参数为多个,@RequestParam 绑定参数关系。

1.4 日期类型参数

日期参数:使用@DateTimeFormat注解完成日期参数格式转换。

1.5 JSON数据类型

JSON参数: JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用@RequestBody标识。

1.6 路径参数

路径参数:通过请求URL直接传递参数,使用{...}来标识该路径参数,需要使用@PathVariable获取路径参数


2 Controller响应

@ResponseBody注解

类型:方法注解、类注解。

位置:Controller方法上 / 类.上

作用:将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为JSON格式响应

说明:@RestController = @Controller + @ResponseBody ;

2.1 响应字符串

会直接以字符串的形式返回。

2.2 响应对象

@ResponseBody会将对象转换为JSON返回。

2.3 响应集合

@ResponseBody会将集合转换为JSON并装到数组里面进行返回。

2.4 统一响应规范

响应数据时,由于有3种类型,如果直接响应数据给前端,不易管理和维护,这时就可以定义一个工具类(通常命名为:Result)作为对象进行响应结果。

public class Result {

    //响应码 true 代表成功,false 代表失败
    private  boolean  flag;
    //提示信息
    private String  msg;
    //返回的数据
    private  Object  data;

    //空构造器
    public Result() {
    }
    //有参构造器
    public Result(boolean flag, String msg, Object data) {
        this.flag = flag;
        this.msg = msg;
        this.data = data;
    }

    //成功的静态方法(也可以直接new一个对象,通过有参构造器进行传值)
    public  static Result success(String msg,Object data){
     return   new Result(true,msg,data);
    }

}
@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private IUserService iUserService; 

       @PostMapping("/register")
       //返回值为Resul对象,请求的数据为JSON类型要加@RequestBody
       public Result registerSelect(@RequestBody User user) {
           //将前端发送过来的密码通过MD5进行加密
        String pwd =DigestUtils.md5DigestAsHex(user.getPassword().getBytes());
           //将加密的密码放会用户对象中
        user.setPassword(pwd);
     //创建一个返回结果对象,iUserService.userRegister(user)返回的是boolean类型的数据,为flag
        return new Result(iUserService.userRegister(user),"创建用户",null);
    }
    
}
posted @ 2024-06-25 16:35  永恒之月TEL  阅读(23)  评论(0编辑  收藏  举报