解决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 相关文章推荐
Spring Data JPA使用JPQL与原生SQL进行查询的操作
Jun 15 Java/Android
eclipse创建项目没有dynamic web的解决方法
Jun 24 Java/Android
Java 语言中Object 类和System 类详解
Jul 07 Java/Android
Log4j.properties配置及其使用
Aug 02 Java/Android
logback如何自定义日志存储
Aug 30 Java/Android
java多态注意项小结
Oct 16 Java/Android
Java 实战项目之家居购物商城系统详解流程
Nov 11 Java/Android
JVM之方法返回地址详解
Feb 28 Java/Android
Netty分布式客户端接入流程初始化源码分析
Mar 25 Java/Android
Android中的Launch Mode详情
Jun 05 Java/Android
Spring中bean集合注入的方法详解
Jul 07 Java/Android
阿里面试Nacos配置中心交互模型是push还是pull原理解析
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基础学习小结
2011/04/17 PHP
PHP 图片水印类代码
2012/08/27 PHP
深入PHP异步执行的详解
2013/06/03 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
2016/09/22 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
PHP crc32()函数讲解
2019/02/14 PHP
jquery 上下滚动广告
2009/06/17 Javascript
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
js创建元素(节点)示例
2014/01/02 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
express 项目分层实践详解
2018/12/10 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
windows下安装Python和pip终极图文教程
2017/03/05 Python
一百行python代码将图片转成字符画
2021/02/19 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
全球虚拟主机商:HostGator
2017/02/06 全球购物
小学教师管理制度
2014/01/18 职场文书
辩论赛主持词
2014/03/18 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
大学新生军训方案
2014/05/03 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python
Elasticsearch 聚合查询和排序
2022/04/19 Python
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS