spring boot前后端交互之数据格式转换(表单,URL,JSON)

得意时要看淡,失意时要看开。不论得意失意,切莫大意;不论成功失败,切莫止步。志得意满时,需要的是淡然,给自己留一条退路;失意落魄时,需要的是泰然,给自己觅一条出路spring boot前后端交互之数据格式转换(表单,URL,JSON),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

在前后端分离开发的项目种,前端获取数据的方式基本都是通过Ajax。请求方法也有所不同,常见的有POST,GET,PUT,DELETE等。甚至连请求的数据类型都不一样,x-www-form-urlencodeed,form-data,json等。

那么在前后端交互过程中,具体的数据该如何接收呢?

spring boot接收JSON数据

{
 "id": 0,
  "address_id": 6,
  "detail_address": "我是11251111111",
  "user_id": 611111,
  "create_time": null,
  "update_time": null,
  "name": "测试人11111",
  "phone": "13378954789111"
}
@RequestMapping(value = "/add",method = RequestMethod.POST,produces = "application/json;charset=UTF-8")
 public ResponseData addUsers(@RequestBody UserInfo userInfo){
     if (StringUtils.isNotEmpty(userInfo.getAccount())){
         if (userInfoService.ifUserExist(userInfo.getAccount())){
             return ResponseData.error(500,"账户已存在,请重新设置!");
         }
     }
     System.out.println(userInfo.toString());
}

在这里插入图片描述
接收json数据的两个关键点:

  • json类型声明
produces = "application/json;charset=UTF-8"

@RequestMapping接口处声明传输类型未json。

  • @RequestBody声明Java Bean

json数据必须用对象接收,且必须用@RequestBody声明,且json的key与bean的成员变量名要对应。

spring boot 接收x-www-form-urlencodeed表单数据

在这里插入图片描述
表单数据有两种接收类型:

  • @RequestParam接收
    @RequestMapping(value = "/fuzzy",method = RequestMethod.POST)
    public ResponseData fuzzyQuery(@RequestParam("carType") Integer carTpe, @RequestParam("carStatus") Integer carStatus, @RequestParam("name") String name, @RequestParam("carNo") String carNo){
        //String name1 = "%"+name+"%";
        List<CarInfo> carInfos = carInfoService.fuzzySelect(carTpe, carStatus, name, carNo);
        return ResponseData.success(carInfos);
    }

使用@RequestParam的传入参数名必须与接收的参数名一致。如表单传入name = 'mike',则后端接受时:@RequestParam("name") String name

  • 对象接收
    @RequestMapping(value = "/pageList",method = RequestMethod.POST)
    public ResponseData carPageList(CarInfoSelect carInfoSelect){
        IPage<CarInfoResult1> page = carInfoService.carPageList(carInfoSelect);
        //LayuiPageInfo pageInfo = LayuiPageFactory.createPageInfo(page);
        return ResponseData.success(page);
    }

表单传入的参数很多,将这些参数封装为一个java对象来接收,不需要注解,注意区分和josn数据的区别。

spring boot 接收URL数据

  • /tmp?name=mike类型

这种类型的接收方式千万别写错了,下图这样就是错的:

在这里插入图片描述
这样输入是就会报错404

在这里插入图片描述

该类型的传参,url通过/tmp?name=mike这样传,接收知道对应的url,不用写?和其后面的字段

@GetMapping("/tmp")
public String getName(String name){
    System.out.println(name);
    return name;
}

在这里插入图片描述

  • /tmp/{type}/{page}的参数接收
@GetMapping("/item/{type}/{page}")
public String getParvalue(@PathVariable("type") String type, @PathVariable("page")Integer page){
   return "类型:"+type+"页数"+page;
}

在这里插入图片描述

总结:

  1. 不需要使用注解的就两种:
  • 表单用对象接收
  • /tmp?name=mike类型的参数接收
  1. 需要使用注解的有:JSON,表单的单个接收,/tmp/{type}/{page}的参数接收

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/156207.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!