springboot 获取前端json数据几种方法
基本概念
- JQuery Ajax 以 application/x-www-form-urlencoded 上传 JSON对象 ,
后端用 @RequestParam 或者Servlet 获取参数。
- JQuery Ajax 以 application/json 上传 JSON字符串,
后端用 @RquestBody 获取参数,或者@RequestParam获取。
几个注释
@PathVariable:
一般我们使用URI template样式映射时用,即url/{key}这种形式,也就是一般我们使用的GET,DELETE,PUT方法会使用到的,我们可以获取URL后所跟的参数。
@RequestParam:
一般我们使用该注解来获取多个参数,在注解后括号内写入需要获取参数的参数名即可,一般在PUT,POST中比较常用。注意后端想用这个方法,前端必须x-www-form-urlencoded,而不能加contentType: ‘application/json;charset=UTF-8’,
@RequestBody:
该注解和@RequestParam殊途同归,我们使用该注解将所有参数转换,在代码部分在一个个取出来,也是目前我使用到最多的注解来获取参数。它是用来处理前台定义发来的数据Content-Type: 而不是application/x-www-form-urlencoded编码的内容。例如application/json, application/xml等;使用@RequestBody注解接收参数的时候,从名称上来看也就是说要读取的数据在请求体里,前台的Content-Type必须要改为application/json,所以要发post请求,因为Ajax使用的POST,并且发送的是JSON对象。前端必须指定请求json数据的contentType为:application/json,否则会报类型不支持的异常错误“org.springframework.web.HttpMediaTypeNotSupportedException”
@RequestHeader
获取头信息里的值
@CookieValue
获取Cookie值
示例
参数来自路径
1.get请求,url路径传参
http://localhost:4001/api/unit?code=111
后端要获取code参数,可以使用@RequestParam注解
@RestController
public class HelloController {
@RequestMapping(value="/hello",method= RequestMethod.GET)
public String sayHello(@RequestParam Integer id){
return "id:"+id;
}
}
2.get请求,url路径参数
http://localhost:4001/api/unit/1
后端使用@PathVariable可以接收路径参数1。
@RestController
public class HelloController {
@RequestMapping(value="/hello/{id}/{name}",method= RequestMethod.GET)
public String sayHello(@PathVariable("id") Integer id,@PathVariable("name") String name){
return "id:"+id+" name:"+name;
}
}
一般参数来自路径的,为get请求时,使用@PathVariable或者@RequestParam获取参数值,获取路径参数。
@PathVariable一般用于获取获取url/{key}
@RequestParam获取查询参数。即url?name=XX
参数来自请求体Body
一般是post请求,后端接受方式为用map接收,或者实体对象接收
//map接收
@PostMapping(path = "/demo1")
public void demo1(@RequestBody Map<String, String> person) {
System.out.println(person.get("name"));
}
//或者是实体对象接收
@PostMapping(path = "/demo1")
public void demo1(@RequestBody Person person) {
System.out.println(person.toString());
}
//或者直接集合的方式,这样前端传的是列表
@PostMapping("/getJson")
@ResponseBody
public List<User> getJsonVal(@RequestBody List<Person> person) throws IOException {
for(User person1: person){
System.out.println("person1= " + person1);
}
return user;
}
参考链接:
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)