springboot请求响应,接收参数详解

1.基础知识

请求( HttpServletRequest ):获取请求数据
响应( HttpServletResponse ):设置响应数据
BS 架构: Browser/Server ,浏览器 / 服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。
CS 架构: Client/Server ,客户端 / 服务器架构模式。

2.请求

1.简单参数

1.原始方式

在原始的web程序中,获取请求参数,需要通过HttpServletRequest 对象手动获取。

@RequestMapping("/simpleParam")
public String simpleParam(HttpServletRequest request){
    String name = request.getParameter("name");
    String ageStr = request.getParameter("age");

    int age = Integer.parseInt(ageStr);
    System.out.println(name+"  :  "+age);
    return "OK";
}

在postman中发送参数如图:

2.springboot方式(简单参数:参数名与形参变量名相同,定义形参即可接收参数

@RequestMapping("/simpleParam")
public String simpleParam(String name , Integer age){
    System.out.println(name+"  :  "+age);
    return "OK";
}

在postman中发送参数如图:

get方式

post方式

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

@RequestMapping("/simpleParam")
public String simpleParam(@RequestParam(name = "name") String username , Integer age){
    System.out.println(username + " : " + age);
    return "OK";
}

在postman中发送参数如图:

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

2.实体参数

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

@RequestMapping("/simplePojo")
public String simplePojo(User user){
    System.out.println(user);
    return "OK";
}

在postman中发送参数如图:

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

@RequestMapping("/complexPojo")
public String complexPojo(User user){
    System.out.println(user);
    return "OK";
}

在postman中发送参数如图:

3.数组集合参数

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

@RequestMapping("/arrayParam")
public String arrayParam(String[] hobby){
    System.out.println(Arrays.toString(hobby));
    return "OK";
}

在postman中发送参数如图:

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

@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> hobby){
    System.out.println(hobby);
    return "OK";
}

在postman中发送参数如图:

4.日期参数

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

@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){
    System.out.println(updateTime);
    return "OK";
}

在postman中发送参数如图:

5.JSON参数

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

@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
    System.out.println(user);
    return "OK";
}

在postman中发送参数如图:

6.路径参数

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

1.可变路径在最后

@RequestMapping("/path/{id}")
public String pathParam(@PathVariable Integer id){
    System.out.println(id);
    return "OK";
}

在postman中发送参数如图:

2.可变路径在中间

@RequestMapping("/path/{id}/{name}")
public String pathParam2(@PathVariable Integer id, @PathVariable String name){
    System.out.println(id+ " : " +name);
    return "OK";
}

在postman中发送参数如图:

3.响应

@ResponseBody

类型:方法注解、类注解

位置:Controller方法上/类上

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

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

ps:@ResponseBody是将后端的对象自动转换为json格式返回给前端,而@ResquestBody是将前端的参数自动封装成对象供后端使用

统一响应结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值