这是我参与8月更文挑战的第6天,活动详情查看: 8月更文挑战”
面试官:了解RESTful吗?
我:听说过。
面试官:那什么是RESTful?
我:就是用起来很规范,挺好的
面试官:是RESTful挺好的,还是自我感觉挺好的
我:都挺好的。
面试官:… 把门关上。
我:… 要干嘛?先关上再说。
面试官:我说出去把门关上。
我:what ?,夺门而去
今天这篇文章主要想写一下关于Restful,大家势必或多或少听说过,但是看过很多RESTful相关的文章总结,参齐不齐,结合工作中的使用,非常有必要归纳一下,RESTful只是一种架构方式的约束,给出一种约定的标准,完全严格遵守RESTful标准并不是很多,也没有必要。但是在实际运用中,有RESTful标准可以参考,是十分有必要的。
实际上在工作中对api接口规范、命名规则、返回值、授权验证等进行一定的约束,一般的项目api只要易测试、足够安全、风格一致可读性强、没有歧义调用方便我觉得已经足够了,接口是给开发人员看的,也不是给普通用户去调用。
认识 RESTFul
1)REST(英文:Representational State Transfer,简称 REST)
2)一种互联网软件架构设计的风格,但它并不是标准,它只是提出了一组客户端和服务器交互时的架构理念和设计原则,基于这种理念和原则设计的接口可以更简洁,更有层次,REST这个词,是 Roy Thomas Fielding 在他 2000 年的博士论文中提出的。
3)任何的技术都可以实现这种理念,如果一个架构符合 REST 原则,就称它为 RESTFul 架构
4)比如我们要访问一个 http 接口:http://localhost:8080/boot/order?id=1021&status=1
5)采用 RESTFul 风格则 http 地址为:http://localhost:8080/boot/order/1021/1
Spring Boot 开发 RESTFul
Spring boot 开发 RESTFul 主要是几个注解实现:
(1) @PathVariable
获取 url 中的数据
该注解是实现 RESTFul 最主要的一个注解
(2) @PostMapping
接收和处理 Post 方式的请求
(3) @DeleteMapping
接收 delete 方式的请求,可以使用 GetMapping 代替
(4) @PutMapping
接收 put 方式的请求,可以用 PostMapping 代替
(5) @GetMapping
接收 get 方式的请求
案例:使用 RESTful 风格模拟实现对学生的增删改查操作
项目名称:014-springboot-restful
该项目集成了 MyBatis、spring、SpringMVC,通过模拟实现对学生的增删改查操作
(6) pom.xml 文件添加内容如下
(7) application.yml 核心配置文件
(8) 通过逆向工程生成 DAO
(9) 创建 RESTfulController,并编写代码
(10) 使用 Postman 模拟发送请求,进行测试
(11) 总结:其实这里我们能感受到的好处
➢ 传递参数变简单了
➢ 服务提供者对外只提供了一个接口服务,而不是传统的 CRUD 四个接口
请求冲突的问题
项目名称:015-springboot-restful-url-conflict
➢ 改路径
➢ 改请求方式
创建 RESTfulController 类,结合 Postman 进行测试说明
RESTful 原则
➢ 增 post 请求、删 delete 请求、改 put 请求、查 get 请求
➢ 请求路径不要出现动词
例如:查询订单接口
/boot/order/1021/1(推荐)
/boot/queryOrder/1021/1(不推荐)
➢ 分页、排序等操作,不需要使用斜杠传参数
例如:订单列表接口
/boot/orders?page=1&sort=desc
一般传的参数不是数据库表的字段,可以不采用斜杠