SpringBoot实战(四)获取接口请求中的参数(@PathVariable,@RequestParam,@RequestBody)
上一篇SpringBoot实战(二)Restful风格API接口中写了一个控制器,获取了前端请求的参数,现在我们就参数的获取与校验做一个介绍:
一:获取参数
SpringBoot提供的获取参数注解包括:@PathVariable,@RequestParam,@RequestBody,三者的区别如下表:
示例代码:
Order:
package com.example.demo.controller.user.entity; public class Order {
private Integer id;
private String name;
private Integer price; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getPrice() {
return price;
} public void setPrice(Integer price) {
this.price = price;
}
}
OrderController
package com.example.demo.controller.user.controller; import com.example.demo.controller.user.entity.Order;
import org.springframework.web.bind.annotation.*; @RestController
public class OrderController { /**
* Get请求的参数可以通过@PathVariable和@RequestParam获取
* @param id 必填
* @param name 必填
* @param price 选填,默认值为0
* @return
*/
@GetMapping("/orders/{id}")
public String getOrder(@PathVariable(value = "id")Integer id,
@RequestParam(value = "name")String name,
@RequestParam(value = "price",required = false,defaultValue = "0") Integer price){
String result = "id:"+id+",name:"+name+",price:"+price;
return result;
} /**
* Post使用@RequestBody注解将Json格式的参数自动绑定到Entity类
* @param order
* @return
*/
@PostMapping("/order/check")
public String checkOrder(@RequestBody Order order){
String result = "id:"+order.getId()+",name:"+order.getName()+",price:"+order.getPrice();
return result;
} /**
* Post使用@RequestParam获取请求体中非Json格式的数据
* @param amount
* @param discount
* @return
*/
@PostMapping("/order/checkmore")
public String checkMore(@RequestParam(value = "amount")Integer amount, @RequestParam(value = "discount")float discount){
String result = "amount:"+amount+",discount:"+discount;
return result;
} /**
* Post请求也可以直接与对象类绑定,但需要参数名一致,不支持json格式,只支持form-data和x-www.form-urlencoded格式
* @param order
* @return
*/
@PostMapping("/order/add")
public String addOrder(Order order){
String result = "id:"+order.getId()+",name:"+order.getName()+",price:"+order.getPrice();
return result;
} /**
* Put请求可以直接与对象类绑定,但需要参数名一致
* @param id
* @param order
* @return
*/
@PutMapping("/order/{id}/update")
public String updateOrder(@PathVariable(value = "id")Integer id,Order order){
String result = "pathid:"+id+"===Order(id:"+order.getId()+",name:"+order.getName()+",price:"+order.getPrice()+")";
return result;
} }
注意点:
1.针对一些非必填的参数,可以使用required关键字来标识,同时必须设置默认值defaultValue,如getOrder方法中对price参数的获取:
@RequestParam(value = "price",required = false,defaultValue = "0") Integer price
2.参数可以直接与Entity类绑定,但不支持json格式,只支持form-data和x-www.form-urlencoded格式
@PostMapping("/order/add")
public String addOrder(Order order){
3.使用的Postman做的测试,所有接口都测试通过,也推荐大家使用Postman作为日常的接口测试工具,安装和操作都很简单。
附部分截图:
Get:@PathVariable,@RequestParam
Post:@RequestBody
获取到参数以后就是要对数据做校验了,在下一篇中进行介绍
SpringBoot实战(四)获取接口请求中的参数(@PathVariable,@RequestParam,@RequestBody)的更多相关文章
- SpringBoot 拦截器获取http请求参数
SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 目录 SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 获取http请求参数是一种刚需 定义拦截器获取请求 为 ...
- SpringMVC参数绑定(从请求中接受参数)
参数绑定(从请求中接收参数) 1)默认类型: 在controller方法中可以有也可以没有,看自己需求随意添加. httpservletRqeust,httpServletResponse,httpS ...
- soapUI使用-DataSource获取oracle库中的参数
soapUI使用-DataSource获取oracle库中的参数 下载mysql和oracle驱动包:http://pan.baidu.com/s/1i3sy1MH 放在Program Files\S ...
- 获取url路径中的参数
简介 运用js的时候,我们有时可能会有这样的需求,就是想要获取浏览器地址栏指定的一项参数,形如:https://i.cnblogs.com/EditPosts.aspx?postid=8628413& ...
- 获取网页url中的参数
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用JavaScript获取url(request)中的参数
这次是使用JavaScript来获取url(request)中的参数 在日常页面编写的过程中为了方便操作在<script>中通过使用window.location.href="要 ...
- SpringMVC无法获取请求中的参数的问题的调查与解决(1)
*更新:本文第一版中犯了比较大的错误,无论@RequestBody还是@RequestParam注解一样,都会使用全局的Encoding进行解码,会导致特殊编码的参数值丢失. 只要抛弃掉注解,就完全可 ...
- Spring MVC如何获取请求中的参数
目录 一.获取URL中路径参数 1.1 @PathVariable 注解 1.2 @PathParam 注解 二.获取请求参数: 2.1 GET请求 2.1.1 获取请求中的单个参数:@Request ...
- spring boot拦截器中获取request post请求中的参数
最近有一个需要从拦截器中获取post请求的参数的需求,这里记录一下处理过程中出现的问题. 首先想到的就是request.getParameter(String )方法,但是这个方法只能在get请求中取 ...
随机推荐
- vue调试工具vue-devtools的安装
一.可以在chrome商店中下载安装,当然需要FQ哈,你懂得~: 二.手动安装: 1.将github上项目文件克隆到本地,https://github.com/vuejs/vue-devtools: ...
- tensorflow的tf.train.Saver()模型保存与恢复
将训练好的模型参数保存起来,以便以后进行验证或测试.tf里面提供模型保存的是tf.train.Saver()模块. 模型保存,先要创建一个Saver对象:如 saver=tf.train.Saver( ...
- Linux 网络属性管理
Linux网络基础管理-1:IPv4 地址分类: 点分十进制:0.0.0.0-255.255.255.255 A类: 0 0000000 - 0 1111111: 1-127 网络数:126, 1 ...
- linux软链接与硬链接详解
软连接 命令: ln -s 原文件 目标文件 特征: 1.相当于windows的快捷方式 2.只是一个符号连接,所以软连接文件大小都很小 3.当运行软连接的时候,会根据连接指向找到真正的文件,然后执行 ...
- 数据结构实现(四)二叉查找树java实现
转载 http://www.cnblogs.com/CherishFX/p/4625382.html 二叉查找树的定义: 二叉查找树或者是一颗空树,或者是一颗具有以下特性的非空二叉树: 1. 若左子树 ...
- poj2965 The Pilots Brothers' refrigerator(直接计算或枚举Enum+dfs)
转载请注明出处:http://blog.csdn.net/u012860063? viewmode=contents 题目链接:http://poj.org/problem? id=2965 ---- ...
- [iOS]字符串转字典
有点时候,我们json中有post请求的网址,这个时候我们须要把网址字符串转换成body体 字典 放在post请求中 NSString *body = [self.url_C_ component ...
- php设计模式之责任链模式
php设计模式之责任链模式 实际问题 你的论坛有举报功能,版主能解决粗口方面的举报,警察能解决严重一点的黄赌毒方面的举报,更严重的反政府的举报就需要由国安局来完成. 职场中每个人都有直属的上级,如果到 ...
- [bzoj 1398] Vijos1382寻找主人 Necklace 解题报告(最小表示法)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1398 题目: Description 给定两个项链的表示,判断他们是否可能是一条项链. ...
- MYSQL5.6/5.7 数据库密码丢失问题处理(需重启)
文章结构图: 一.MYSQL5.6密码丢失 1. 强行停止MYSQL 丢失超级管理用户ROOT的密码是致命的,可以通过--skip-grant-tables参数来跳过权限表. 停止MYSQL,强行杀 ...