当前位置:网站首页>REST学习
REST学习
2022-08-03 06:34:00 【bobo洁厕灵】
REST(Representational State Transfer),译为:表现形式状态转换,它是一种软件架构风格
为什么要使用REST风格:
传统方式一般是一个请求url对应一种操作,这样做不仅麻烦,也不安全,因为会程序的人读取了你的 请求url地址,就大概知道该url实现的是一个什么样的操作。
查看REST风格的描述,你会发现请求地址变的简单了,并且光看请求URL并不是很能猜出来该URL的具体功能,
所以REST的优点有: 隐藏资源的访问行为,无法通过地址得知对资源是何种操作 书写简化
REST风格案例
REST按照不同的请求方式区分对资源进行何种操作
请求方式有很多种,常用的有四种,GET,POST,PUT,DELETE
按照案例上的请求方式对应相关操作
REST风格只是一种约定方式,不是规范,所以可以被打破,但是在开发的过程中,大部分人都是按照REST风格来开发,所以以后都是基于RESTFUL进行开发。
开发步骤:
1.保存
修改@RequestMapping参数
修改之前的增删改查,替换为RESTFUL的开发方式
之前不同的请求有不同的操作方式,现在将其修改为统一的请求路径
发送请求的方式要和method定义的操作相同
2.删除
修改@RequestMapping参数
删除方法需要携带所要删除数据的id,携带数据参数需要使用@PathVariable()
形参的名称和路径{}中的名称问题
形参名称id和路径user/{id)}相同,数据参数可以被传递
但下图的形参和注解中的参数不同,路径user/{id}对应了注解@PathVariable(id),前后参数只要一致,就能完成数据参数携带,形参的名称
多个参数需要传递书写问题
3.修改
4.查询
4.1根据ID查询
4.2查询所有
总结
@PathVariable
三个参数比较
@RequestParam用于接收url地址传参的普通参数, 集合类型参数
@RequestBody用于接收json数据,可以放在类上,或者方法上,方法里的形参定义上
@PathVariable用于接收路径参数,使用{参数名}来描述路径参数
后期开发中,发送请求参数超过一个时,以json为主,@RequestBody应用较广
发送非json数据,使用@RequestParam接收参数
优化RESTFUl入门案例
目前缺点:
每个方法上都有@RequestBody注解,重复性过高
每个方法的@RequestMapping都定义了相同的访问路径,重复性过高
每个方法的@RequestMapping都定义method属性请求方式,重复性过高
解决思路:
1.提取公因式
把方法上的@RequestBody提到类上,表示类中的所有方法都会有RequestBody的功能
使用@RestController注解替换@Controller与@ResponseBody注解,简化书写
把相同路径提取到类上,定义所有方法的共同路径
使用@GetMapping,@PostMapping,@PutMapping @DeleteMapping代替method方法
RESTFUl案例(带页面)
创建一个新的web的maven项目,项目结构如下,把网页静态资源复制到webapp目录下
在地址栏输入books.html的地址,SpringMVC会拦截静态资源
解决方法:
SpringMVC需要将静态资源进行放行。
新建一个配置类SpringMvcSupport
修改SpringMvcConfig文件,能够扫描到该配置类
边栏推荐
猜你喜欢
【C语言】函数栈帧的创建和销毁详解
学习Glide 常用场景的写法 +
多线程打印ABC(继承+进阶)
ViewModel 记录下 +
Nacos与Eureka的区别
商业智能BI业务分析思维:供应链分析 – 如何控制牛鞭效应(二)
El - tree set using setCheckedNodessetCheckedKeys default check nodes, and a new check through setChecked specified node
关于NOI 2022的报到通知
【图像边缘检测】基于matlab灰度图像的积累加权边缘检测【含Matlab源码 2010期】
9月考,如何选择靠谱正规的培训机构?
随机推荐
贷中存量客户的价值挖掘与分类实现,试试这一重要的场景模型
docker-compose部署mysql
El - tree set using setCheckedNodessetCheckedKeys default check nodes, and a new check through setChecked specified node
Shell脚本之一键安装mysql
MySQL日期和时间戳的转换
一文搞懂什么是@Component和@Bean注解以及如何使用
postman将接口返回结果生成json文件到本地
El - tree to set focus on selected highlight highlighting, the selected node deepen background and change the font color, etc
信息学奥赛一本通T1447:靶形数独
关于利用canvas画带箭头的直线旋转
qt学习之旅--MinGW编译FFmpeg(32bit)
ISIJ 2022收官,中国初中生再展风采
Charles capture shows
solution 帆软11版本参数联动为null查询全部
STL-vector容器
Flink的Exactly-Once、状态机制、watermark机制
jvm 面试题
第四章:架构,Architecture
多线程打印ABC(继承+进阶)
JS 原型原型链