原创公众号:bigsai 转载请联系bigsai
文章收藏在回车课堂
前言
在学习RESTful 风格接口之前,即使你不知道它是什么,但你肯定会好奇它能解决什么问题?有什么应用场景?听完下面描述我想你就会明白:
在互联网并没有完全流行的初期,移动端也没有那么盛行,页面请求和并发量也不高,那时候人们对接口的要求没那么高,一些动态页面(jsp)就能满足绝大多数的使用需求。
![55a6554cd29141be3241660713a48a2a.png](https://i-blog.csdnimg.cn/blog_migrate/d369f75dac2dc9b14fdf7797ef462f17.jpeg)
但是随着互联网和移动设备的发展,人们对Web应用的使用需求也增加,传统的动态页面由于低效率而渐渐被HTML+JavaScript(Ajax)的前后端分离所取代,并且安卓、IOS、小程序等形式客户端层出不穷,客户端的种类出现多元化,而客户端和服务端就需要接口进行通信,但接口的规范性就又成了一个问题:
![37fdda37d05634fe3233842b5df29cfa.png](https://i-blog.csdnimg.cn/blog_migrate/be77e753058d701595a6a172e241cdcb.jpeg)
所以一套结构清晰、符合标准、易于理解、扩展方便让大部分人都能够理解接受的接口风格就显得越来越重要,而RESTful风格的接口(RESTful API)刚好有以上特点,就逐渐被实践应用而变得流行起来。
![79523c633d422b89f94a53ee9590e0dc.png](https://i-blog.csdnimg.cn/blog_migrate/dfda5677641f4d087d9ddf98707d3fd1.jpeg)
现在,RESTful是目前最流行的接口设计规范,在很多公司有着广泛的应用,其中Github 的API设计就是很标准的RESTful API,你可以参考学习。
在开发实践中我们很多人可能还是使用传统API进行请求交互,很多人其实并不特别了解RESTful API,对RESTful API的认知可能会停留在:
- 面向资源类型的
- 是一种风格
- (误区)接口传递参数使用斜杠(/)分割而不用问号(?)传参。
而其实一个很大的误区不要认为没有查询字符串就是RESTful API,也不要认为用了查询字符串就不是RESTful API,更不要认为用了JSON传输的API就是RESTful API。
本教程将带你了解RESTful并用SpringBoot实战RESTful API,在实现本案例前,你需要保证你的电脑上
- 拥有IDEA用来编写项目代码
- 拥有Postman模拟请求进行测试
- 拥有关系数据库MySQL 5.7
- 拥有navicat对MySQL进行管理
一、REST介绍
REST涉及一些概念性的东西可能比较多,在实战RESTful API之前,要对REST相关的知识有个系统的认知。
REST的诞生
REST(英文:Representational State Transfer,简称REST,直译过来表现层状态转换)是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
它首次出现在 2000 年 Roy Thomas Fielding 的博士论文中,这篇论文定义并详细介绍了表述性状态转移(Representational State Transfer,REST)的架构风格,并且描述了 如何使用 REST 来指导现代 Web 架构的设计和开发。用他自己的原话说:
我写这篇文章的目的是:在符合架构原理前提下,理解和评估基于网络的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。
需要注意的是REST并没有一个明确的标准,而更像是一种设计的风格,满足这种设计风格的程序或接口我们称之为RESTful(从单词字面来看就是一个形容词)。所以RESTful API 就是满足REST架构风格的接口。
![669870dc17827560aa95d4b72d5ad7ae.png](https://i-blog.csdnimg.cn/blog_migrate/fe869d6407dc45bb6ffed64c047f8ee8.jpeg)
Fielding博士当时提出的是REST架构在很久的时间内并没有被关注太多,而近些年REST在国内才变得越来越流行。下面开始详细学习REST架构特征。
REST架构特征
既然知道REST和RESTful的联系和区别,现在就要开始好好了解RESTful的一些约束条件和规则,RESTful是一种风格而不是