解决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如何初始化执行sql语句
Jun 22 Java/Android
java固定大小队列的几种实现方式详解
Jul 15 Java/Android
idea以任意顺序debug多线程程序的具体用法
Aug 30 Java/Android
java代码实现空间切割
Jan 18 Java/Android
maven依赖的version声明控制方式
Jan 18 Java/Android
解析探秘fescar分布式事务实现原理
Feb 28 Java/Android
Java实现经典游戏泡泡堂的示例代码
Apr 04 Java/Android
Java 获取Word中所有的插入和删除修订的方法
Apr 06 Java/Android
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
Apr 19 Java/Android
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
Apr 24 Java/Android
Spring Boot 实现 WebSocket
Apr 30 Java/Android
JAVA springCloud项目搭建流程
May 11 Java/Android
java版 联机五子棋游戏
Java版 简易五子棋小游戏
java版 简单三子棋游戏
May 04 #Java/Android
Java 定时任务技术趋势简介
Java版 单机五子棋
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 #Java/Android
Spring Boot 实现 WebSocket
You might like
php下使用以下代码连接并测试
2008/04/09 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
javascript 解析url的search方法
2010/02/09 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
学习jQuey中的return false
2015/12/18 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
2016/05/14 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
python使用Image处理图片常用技巧分析
2015/06/01 Python
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
轻松理解Python 中的 descriptor
2017/09/15 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
python mysql断开重连的实现方法
2019/07/26 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
linux面试题参考答案(4)
2014/09/21 面试题
有个性的自我评价范文
2013/11/15 职场文书
省级四好少年事迹材料
2014/01/25 职场文书
酒店节能减排方案
2014/05/26 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
公司保洁员岗位职责
2015/02/13 职场文书
调研报告的主要写法
2019/04/18 职场文书