解决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 Dubbo框架知识点梳理
Jun 26 Java/Android
SpringCloud的JPA连接PostgreSql的教程
Jun 26 Java/Android
HashMap实现保存两个key相同的数据
Jun 30 Java/Android
看完这篇文章获得一些java if优化技巧
Jul 15 Java/Android
java设计模式--三种工厂模式详解
Jul 21 Java/Android
mybatis3中@SelectProvider传递参数方式
Aug 04 Java/Android
Java比较两个对象中全部属性值是否相等的方法
Aug 07 Java/Android
使用logback实现按自己的需求打印日志到自定义的文件里
Aug 30 Java/Android
使用springMVC所需要的pom配置
Sep 15 Java/Android
Java 实战项目之家居购物商城系统详解流程
Nov 11 Java/Android
Springboot-cli 开发脚手架,权限认证,附demo演示
Apr 28 Java/Android
java实现web实时消息推送的七种方案
Jul 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仿discuz分页效果代码
2008/10/02 PHP
js实现上传图片之上传前预览图片
2013/03/25 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
微信小程序实现弹出菜单
2018/07/19 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
ES6 Class中实现私有属性的一些方法总结
2019/07/08 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
详解python字节码
2018/02/07 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
Python pymongo模块常用操作分析
2018/09/01 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
2019/01/08 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
tensorflow 实现数据类型转换
2020/02/17 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
哪些是python中web开发框架
2020/06/17 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
装饰资料员岗位职责
2013/12/30 职场文书
护理专业自荐信范文
2015/03/06 职场文书
工程项目合作意向书
2015/05/08 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL