解决Springboot PostMapping无法获取数据的问题


Posted in Java/Android onMay 06, 2022

PostMapping无法获取数据问题

在使用SpringBoot的PostMapping注解的时候,发现无法获取数据(get方法可行),经过一番查证,发现需要添加新的注解

举例如下

    //接受单个参数,使用RequestParam,并且添加上name属性,保证前后端的参数名称一致
 
    @PostMapping(value = "/users")
    public RestfulResponse postUser(@RequestParam("id") Integer id,         @RequestParam("username") String username, @RequestParam("password") String password) {
        User user = new User(id, username, password);
        //User user = new User(1,"tom","123123");
        System.out.println(id + "----" + username);
            restfulResponse = new RestfulResponse(true,200,"查询成功", null);
        return restfulResponse;
    }
    //接受一个实体类,要使用RequestBody 注解
    @PostMapping(value = "/getuser")
    public RestfulResponse postUser1(@RequestBody User user) {
        restfulResponse = new RestfulResponse(true,200,"查询成功", user);
        return restfulResponse;
    }

Springboot之PostMapping 

@PostMapping

映射一个POST请求

Spring MVC新特性

提供了对Restful风格的支持

@PostMapping(value = "/user/login")
//等价于
@RequestMapping(value = "/user/login",method = RequestMethod.POST)

扩展

  • @GetMapping,处理get请求
  • @PostMapping,处理post请求
  • @PutMapping,处理put请求
  • @DeleteMapping,处理delete请求

@RequestMapping

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

属性

  • value:指定请求的实际地址
  • method:指定方法类型,get、post、put、delete等
  • consumes:指定处理请求的提交内容类型,如application/json, text/html;
  • produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
  • params: 指定request中必须包含某些参数值是,才让该方法处理。
  • headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

value/method示例

@Controller
@RequestMapping("/appointments")
public class AppointmentsController {
    private AppointmentBook appointmentBook;
    
    @Autowired
    public AppointmentsController(AppointmentBook appointmentBook) {
        this.appointmentBook = appointmentBook;
    }
    @RequestMapping(method = RequestMethod.GET)
    public Map<String, Appointment> get() {
        return appointmentBook.getAppointmentsForToday();
    }
    @RequestMapping(value="/{day}", method = RequestMethod.GET)
    public Map<String, Appointment> getForDay(@PathVariable @DateTimeFormat(iso=ISO.DATE) Date day, Model model) {
        return appointmentBook.getAppointmentsForDay(day);
    }
    @RequestMapping(value="/new", method = RequestMethod.GET)
    public AppointmentForm getNewForm() {
        return new AppointmentForm();
    }
    @RequestMapping(method = RequestMethod.POST)
    public String add(@Valid AppointmentForm appointment, BindingResult result) {
        if (result.hasErrors()) {
            return "appointments/new";
        }
        appointmentBook.addAppointment(appointment);
        return "redirect:/appointments";
    }
}

value的uri值为以下三类:

A) 可以指定为普通的具体值;

B) 可以指定为含有某变量的一类值(URI Template Patterns with Path Variables);

C) 可以指定为含正则表达式的一类值( URI Template Patterns with Regular Expressions);

@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
  Owner owner = ownerService.findOwner(ownerId);  
  model.addAttribute("owner", owner);  
  return "displayOwner"; 
}
@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")
  public void handle(@PathVariable String version, @PathVariable String extension) {    
    // ...
  }
}

cousumes的样例:

@Controller
@RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json")
public void addPet(@RequestBody Pet pet, Model model) {    
    // implementation omitted
}

params的样例:

@Controller
@RequestMapping("/owners/{ownerId}")
public class RelativePathUriTemplateController {
  @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue")
  public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {    
    // implementation omitted
  }
}

headers的样例:

@Controller
@RequestMapping("/owners/{ownerId}")
public class RelativePathUriTemplateController {
@RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/")
  public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {    
    // implementation omitted
  }
}

Tags in this post...

Java/Android 相关文章推荐
Springboot如何使用logback实现多环境配置?
Jun 16 Java/Android
elasticSearch-api的具体操作步骤讲解
Jun 28 Java/Android
浅谈resultMap的用法及关联结果集映射
Jun 30 Java/Android
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
Jul 01 Java/Android
SpringBoot整合Mybatis Generator自动生成代码
Aug 23 Java/Android
Spring Cloud 中@FeignClient注解中的contextId属性详解
Sep 25 Java/Android
Java tomcat手动配置servlet详解
Nov 27 Java/Android
Java9新特性之Module模块化编程示例演绎
Mar 16 Java/Android
Java 超详细讲解十大排序算法面试无忧
Apr 08 Java/Android
Android 界面一键变灰 深色主题工具类
Apr 28 Java/Android
java版 联机五子棋游戏
May 04 Java/Android
java获取一个文本文件的编码(格式)信息
Sep 23 Java/Android
java版 联机五子棋游戏
Java版 简易五子棋小游戏
java版 简单三子棋游戏
May 04 #Java/Android
Java 定时任务技术趋势简介
Java版 单机五子棋
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 #Java/Android
Spring Boot 实现 WebSocket
You might like
基于PHP读取csv文件内容的详解
2013/06/18 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
Vue-axios-post数据后端接不到问题解决
2020/01/09 Javascript
JavaScript实现拖拽功能
2020/02/11 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
2020/07/21 Javascript
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
Python实现区域填充的示例代码
2021/02/03 Python
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
眼镜促销方案
2014/03/15 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
三八节活动简报
2015/07/20 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书
Python实现学生管理系统并生成exe可执行文件详解流程
2022/01/22 Python