解决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 相关文章推荐
Java实现简易的分词器功能
Jun 15 Java/Android
elasticSearch-api的具体操作步骤讲解
Jun 28 Java/Android
springboot集成springCloud中gateway时启动报错的解决
Jul 16 Java/Android
springboot中rabbitmq实现消息可靠性机制详解
Sep 25 Java/Android
Java实战之课程信息管理系统的实现
Apr 01 Java/Android
mybatis-plus模糊查询指定字段
Apr 28 Java/Android
Java 死锁解决方案
May 11 Java/Android
Spring IOC容器Bean的作用域及生命周期实例
May 30 Java/Android
Android中的Launch Mode详情
Jun 05 Java/Android
Android基础入门之dataBinding的简单使用教程
Jun 21 Java/Android
Android RecyclerView实现九宫格效果
Jun 28 Java/Android
OpenFeign实现远程调用
Aug 14 Java/Android
java版 联机五子棋游戏
Java版 简易五子棋小游戏
java版 简单三子棋游戏
May 04 #Java/Android
Java 定时任务技术趋势简介
Java版 单机五子棋
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 #Java/Android
Spring Boot 实现 WebSocket
You might like
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
jquery入门—数据删除与隔行变色以及图片预览
2013/01/07 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
javascript中的隐式调用
2018/02/10 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
python实现维吉尼亚加密法
2019/03/20 Python
django框架cookie和session用法实例详解
2019/12/10 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
批评与自我批评范文
2014/10/15 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
个人政治思想总结
2015/03/05 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
大学校园招聘会感想
2015/08/10 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP