当你去面试时,面试官问:什么是REST,REST对软件架构有什么影响?
这时,你要怎么回答?
别急,先看看我对REST架构的一些理解,希望对你有所帮助。
什么是REST?
2000年,Roy Thomas Fielding在博士论文中提出REST软件架构风格,描述如何使用这种架构风格来指导基于网络的应用架构设计。
REST是指导WEB应用架构设计和开发的,比如Spring框架就是一种REST风格的架构设计,从时间线上来说,Spring框架在2002年4月份发布1.0,SpringBoot是2014年才发布的。
所以它对互联网发展的影响比较深远,也有人把REST称为“WEB软件架构设计的圣经”。
资源和资源定位符
REST是通过统一资源标识符(URI)来标识资源的,这个资源是指两个组件交互的所涉及的文本、图片或音视频等。
这句话是理解REST的核心。
更简单点来说:REST是一个抽象概念,定义了用来操作资源的约束条件,以URI的形式曝露的约束,定义的是约束,是准则,可以使用这种约束和准则去编写程序,可以解决程序存在的某些问题。
就跟造概念车一样。车还没造好,先想好整部车的外观、发动机、地盘、内饰等,将各种不切实际的想象进行了一种条件限制,比如轮胎必须是圆的,哈哈。后面造车只能按约定好的这个形状这个搭配这个限制,而不是奇形怪状的一堆零件组合。
刚刚说解决问题,解决什么问题呢?继续往下看。
解决什么问题
1. 统一接口,统一URI
原来可能我们是这样定义接口的:
http://xxx.com/api/v1/getUserInfo
http://xxx.com/api/v1/addUserInfo
http://xxx.com/api/v1/updateUserInfo
http://x