目录

Spring-关于请求body与请求param以及后端request获取

Spring 关于请求body与请求param以及后端request获取

https://i-blog.csdnimg.cn/blog_migrate/063f0a7c544fdb840ba3ac8fcfacdbda.png

一、前端:

body数据放在请求体内

param参数是放在url上

https://i-blog.csdnimg.cn/blog_migrate/a57ebf22d22a7a1a2f4088853a438025.png

二、后端:

1、获取路径参数

@GetMapping("/orders/{id}")
public String getOrder(@PathVariable(value = "id") Integer id){
   String result = "id:"+id
   return result;
}

2、获取body数据

1、@RequestBody注解的实体

2、直接使用String接收body的json串

3、Post请求也可以直接与对象类绑定,但需要参数名一致,不支持json格式,只支持 form-datax-www.form-urlencoded 格式(暂不做测试)

@PostMapping("/order/add")
public String addOrder(Order order){
    String result = order.toString();
    return result;
 }

@RequestBody注解注意

1 这个注解用post方法请求

2 请求数据放在body体里

3 接收是实体对象或Map对象时必须配置Content-Type: application/json并且传的是json格式,如果接收是string类型,就没有这个必须

4 @RequestBody是做反序列化处理的@ResponseBody是做序列化处理的

3、获取param参数

1、@RequestParam注解获取 注意value属性对应请求属性名,不设置默认和参数名一样

2、使用request获取

String name=request.getParameter(“name”);  //获取一个参数

Map map=request.getParameterMap();//获取所有参数

3、将请求参数映射到一个对象上

请求能映射到的原因是实体类Test 有name属性,浏览器请求时参数key与属性名一一对应

@RequestMapping(value = "/getParam")
public @ResponseBody Animal getParam(Test test){
    return test;
}

请求地址为http://127.0.0.1:8080/getParam?name=abc

返回:{‘name’: ‘abc’}