解决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 11 Java/Android
详解JAVA中的OPTIONAL
Jun 14 Java/Android
解决tk mapper 通用mapper的bug问题
Jun 16 Java/Android
SpringBoot2 参数管理实践之入参出参与校验的方式
Jun 16 Java/Android
Java循环队列与非循环队列的区别总结
Jun 22 Java/Android
Spring Boot两种全局配置和两种注解的操作方法
Jun 29 Java/Android
Spring Bean是如何初始化的详解
Mar 22 Java/Android
Spring依赖注入多种类型数据的示例代码
Mar 31 Java/Android
Java中API的使用方法详情
Apr 06 Java/Android
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
Apr 08 Java/Android
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
Jun 01 Java/Android
springboot读取resources下文件的方式详解
Jun 21 Java/Android
java版 联机五子棋游戏
Java版 简易五子棋小游戏
java版 简单三子棋游戏
May 04 #Java/Android
Java 定时任务技术趋势简介
Java版 单机五子棋
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 #Java/Android
Spring Boot 实现 WebSocket
You might like
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
用于节点操作的API,颠覆原生操作HTML DOM节点的API
2010/12/11 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
js实现图片360度旋转
2017/01/22 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
微信小程序实现图片上传
2019/05/23 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
Python 专题三 字符串的基础知识
2017/03/19 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
网络体系结构及协议的定义
2014/03/13 面试题
资料员的岗位职责
2013/11/20 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
5个实用的JavaScript新特性
2022/06/16 Javascript