解决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异步之call future
Jun 14 Java/Android
简单总结SpringMVC拦截器的使用方法
Jun 28 Java/Android
Springboot集成阿里云OSS上传文件系统教程
Jun 28 Java/Android
Spring中bean的生命周期之getSingleton方法
Jun 30 Java/Android
Spring Boot 整合 Apache Dubbo的示例代码
Jul 04 Java/Android
详解Java七大阻塞队列之SynchronousQueue
Sep 04 Java/Android
Java中API的使用方法详情
Apr 06 Java/Android
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
Apr 13 Java/Android
Android 界面一键变灰 深色主题工具类
Apr 28 Java/Android
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
Jul 07 Java/Android
SpringBoot详解自定义Stater的应用
Jul 15 Java/Android
java版 联机五子棋游戏
Java版 简易五子棋小游戏
java版 简单三子棋游戏
May 04 #Java/Android
Java 定时任务技术趋势简介
Java版 单机五子棋
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 #Java/Android
Spring Boot 实现 WebSocket
You might like
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
javascript 模拟点击广告
2010/01/02 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
图片动画横条广告带上下滚动的JS代码
2013/10/25 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
Python  word实现读取及导出代码解析
2020/07/09 Python
Python 如何对文件目录操作
2020/07/10 Python
Pandas之缺失数据的实现
2021/01/06 Python
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
南湾猴岛导游词
2015/02/09 职场文书
出国留学自荐信模板
2015/03/06 职场文书
防溺水主题班会教案
2015/08/12 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
Linux中文件的基本属性介绍
2022/06/01 Servers