在我们前后端交互过程中,我们经常提到一个英文单词RESTful,那么什么是RESTful接口呢?

REST,全称Resource Representational State Transfer,翻译成中文是表现层状态转移,估计没几个人看懂这个中文的意思。要理解他的意思,可能要从远古的互联网谈起,上了年纪的程序员应该知道,一开始的网页是真个网页无论样式或者数据都是从后端吐出的,随着互联网的发展,客户端越来越多,所以我们需要前后分离,才能一个后台系统服务多个不同客户端,而这个REST,正是用来解决这一种情况。所以,通俗易懂地讲,REST是中文意思可以理解为资源在网络中以某种表现形式地转移。

编写高质量restful接口(前端后端工程师必会的RESTful接口)(1)

REST是由美国人伦纳德·理查德森提出来一套软件接口设计的模型,今天我们就以最通俗易懂的方法,来解释下什么是REST风格接口。

编写高质量restful接口(前端后端工程师必会的RESTful接口)(2)

Level0 混沌模式

这个模式就好比我们在餐厅吃饭,见到个工作人员,就跟他说,加一份炸鸡,对方会跟你打一张单过来。翻译成程序语言,就是新增一个接口。

{ "addOrder":{ "itemName":"addFriedChicken", } }

同样,现在很多仓听都会有会员卡服务,我们可以随便找一个服务人员,问他你的会员卡积分余额是多少。同样,我们翻译成程序的接口,如下所示。

{ { "queryVipCard":"{cardid}" } }

Level1 指定资源

在上述例子中,我们每次都是随便找一个服务员,也就是当我们访问一个网站的时候,只约定了地址、端口跟IP,每次都请求同一个地址,后端再来判断是要访问哪一个资源。

随着饭店的发展,老板可能会对服务人员进行分工,像一些大型的餐厅,有人负责打扫卫生,有人负责结账等等。

所以,你想点菜的时候,必须指定点菜的服务生,想查询会员的时候,必须去前台找对应的前台服务员,想反馈的时候,要找大堂经理等等。

同样,翻译成程序语言,会变成这样。

/order { "addOrder":{ "itemName":"addFriedChicken", } }

相对于上面的例子,这里虽然只是增加一个反斜杠,但意义却不一样了,增加了具体的资源指定。

编写高质量restful接口(前端后端工程师必会的RESTful接口)(3)

Level2 指定方法

相对于Level1,Level2则更为严格,要求你带上指定的方法,在Http请求中,我们常用的有Get,Post等方法,所以,我们去查询会员卡余额的时候,只要让前台知道你是个Get请求即可,就知道你要查询会员卡。

/card Method=Get { { ${会员卡号} } }

Level3 返回链接

我们可能还想把整个请求变得更加简洁,例如在上述例子中,我们还需要去传递一个会员卡号,我们能不能把会员卡号这个东西也去掉呢?答案是可以的,那便是用户一进店的时候,便把所有的操作的链接都返回给用户,用户想进行什么操作就点击什么链接。

编写高质量restful接口(前端后端工程师必会的RESTful接口)(4)

总结

其实,在线上前端开发与后台开发的交互过程中,更多的是采用Level2的形式。可能上述的描述还比较难以理解,那么传授给你2句口诀,保证立马理解RESTful的含义,那便是:看Url就知道要什么,看http method就知道干什么!

好了,今天关于REST我们就介绍欢迎大家关注我,近期还准备了一些AI相关的知识,整理后会和大家继续分享。大家的支持是我继续唠嗑的动力。同名公众号(沙茶敏碎碎念)

,