解决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 13 Java/Android
详解Java实践之建造者模式
Jun 18 Java/Android
使用feign服务调用添加Header参数
Jun 23 Java/Android
Java图书管理系统,课程设计必用(源码+文档)
Jun 30 Java/Android
解决Swagger2返回map复杂结构不能解析的问题
Jul 02 Java/Android
Spring中的使用@Async异步调用方法
Nov 01 Java/Android
Mybatis是这样防止sql注入的
Dec 06 Java/Android
springboot中的pom文件 project报错问题
Jan 18 Java/Android
java后台调用接口及处理跨域问题的解决
Mar 24 Java/Android
详解Flutter和Dart取消Future的三种方法
Apr 07 Java/Android
SpringBoot详解整合Redis缓存方法
Jul 15 Java/Android
app场景下uniapp的扫码记录
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错误处理函数
2016/04/03 PHP
dojo 之基础篇
2007/03/24 Javascript
ejs v9 javascript模板系统
2012/03/21 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
小程序实现搜索框
2020/06/19 Javascript
vue远程加载sfc组件思路详解
2019/12/25 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
Python 深入理解yield
2008/09/06 Python
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
python使用matplotlib画饼状图
2018/09/25 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
如何使用Python发送HTML格式的邮件
2020/02/11 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
高中军训感言500字
2014/02/24 职场文书
学校花圃的标语
2014/06/18 职场文书
求职教师自荐书
2014/06/19 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
清洁员岗位职责
2015/02/15 职场文书
2015党建工作简报
2015/07/21 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书