解决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将文件打包成zip存放或导出
Jun 11 Java/Android
详解java如何集成swagger组件
Jun 21 Java/Android
Java Dubbo框架知识点梳理
Jun 26 Java/Android
死磕 java同步系列之synchronized解析
Jun 28 Java/Android
Java网络编程之UDP实现原理解析
Sep 04 Java/Android
使用springMVC所需要的pom配置
Sep 15 Java/Android
利用Sharding-Jdbc进行分库分表的操作代码
Jan 22 Java/Android
正则表达式拆分url实例代码
Feb 24 Java/Android
使用HttpSessionListener监听器实战
Mar 17 Java/Android
SpringBoot整合minio快速入门教程(代码示例)
Apr 03 Java/Android
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
Apr 13 Java/Android
Springboot中如何自动转JSON输出
Jun 16 Java/Android
java版 联机五子棋游戏
Java版 简易五子棋小游戏
java版 简单三子棋游戏
May 04 #Java/Android
Java 定时任务技术趋势简介
Java版 单机五子棋
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 #Java/Android
Spring Boot 实现 WebSocket
You might like
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
深入浅出php socket编程
2015/05/13 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
详解vue-cli 脚手架项目-package.json
2017/07/04 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
python基于http下载视频或音频
2018/06/20 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
python实现串口通信的示例代码
2020/02/10 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
python中可以声明变量类型吗
2020/06/18 Python
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
瑞典香水、须后水和美容产品购物网站:Parfym-Klick.se
2019/12/29 全球购物
护士自荐信范文
2013/12/15 职场文书
违反课堂纪律检讨书
2014/01/19 职场文书
《蚕姑娘》教学反思
2014/04/15 职场文书
2014年绿化工作总结
2014/12/09 职场文书
先进个人材料怎么写
2014/12/30 职场文书
摘录式读书笔记
2015/07/01 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS