解决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 相关文章推荐
Win10系统下配置Java环境变量
Jun 13 Java/Android
详解Java实现设计模式之责任链模式
Jun 23 Java/Android
Feign调用传输文件异常的解决
Jun 24 Java/Android
Java SSH 秘钥连接mysql数据库的方法
Jun 28 Java/Android
SpringBoot读取Resource下文件的4种方法
Jul 02 Java/Android
使用@Value值注入及配置文件组件扫描
Jul 09 Java/Android
Spring-cloud Config Server的3种配置方式
Sep 25 Java/Android
MyBatis自定义SQL拦截器示例详解
Oct 24 Java/Android
零基础学java之带参数以及返回值的方法
Apr 10 Java/Android
Java由浅入深通关抽象类与接口(下篇)
Apr 26 Java/Android
详解Spring Bean的配置方式与实例化
Jun 10 Java/Android
Spring Security动态权限的实现方法详解
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 高手之路(二)
2006/10/09 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
js下用eval生成JSON对象
2010/09/17 Javascript
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
jQuery实现简单二级下拉菜单
2015/04/12 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
jquery插件格式实例分析
2016/06/16 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
Python内置数据类型详解
2014/08/18 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
Python 如何创建一个线程池
2020/07/28 Python
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
悬挂训练绳:TRX
2017/12/14 全球购物
Linux面试题LINUX系统类
2014/11/19 面试题
学习演讲稿范文
2014/05/10 职场文书
初一新生军训方案
2014/05/22 职场文书
工作目标责任书
2014/07/23 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
建筑工地文明标语
2014/10/09 职场文书
2016公司年会通知范文
2015/04/25 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
简历自我评价范文
2019/04/24 职场文书
劳务派遣管理制度(样本)
2019/08/23 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技
go goth封装第三方认证库示例详解
2022/08/14 Golang