最近这段时间,一直都在敲代码,开发平台对外交互的API接口,功能已经差不多完成了,回过头来看看自己的接口设计文档,真是不胜感慨,想当初自己也是为了“接口名称”想破了脑袋,各种百度,各种查英文。今天一位同事老大哥走过来看了一眼,随口说了一句:你这接口一点Restful风格都没有啊……看一眼你的接口命名规则就知道。我只能点点头,也是。
之前也有接触过Rest接口设计风格,时间长了,终究还是都还回去了。今天也是准备把这块知识点拾起来,再重新认识一下,感兴趣的小伙伴可以一起来了解了解。
正文
先简单说说什么是Restful API
Restful是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。
Restful是一种架构风格,定义了一组规则和约束,符合Rest风格的API接口被称作为Restful API。Rest(Representational State Transfer)中文翻译过来可以理解为“表现层状态转化”。
主要特点
1、资源
Rest全称是表现层状态转化,那究竟指的是什么的表现?实则指的就是资源,现实网络中各种各样信息的传递、交互,我们可以将这些信息统称为资源,列如一张图片,一段文本,一个文件等等。
在网络中我们使用“统一资源标识符”即URI(Uniform Resource Identifier)来标识一个资源,类似于给你一张身份证,大家根据身份证就能知道你是谁。
Rest风格可以说是“面向资源”的,它请求的是一个资源,该资源往往用一个名词表明,不会出现动词(也是区别于RPC风格的一点)。
2、表现层
Rest全称是“表现层状态转化”,既然是面向资源,为什么不叫“资源状态转化”呢?
我们会发现往往在网络中交互的都是xml,json,html等格式数据,这些格式可以理解为资源对外表现的一种形式,这也说明了实际上网络中交互的是“资源的表现”,并不只是单纯的资源本身。
3、状态的转化
现实网络中,一般都是客户端发起一个请求,服务端进行相应的回应。在这个过程中,势必会涉及到数据和状态的变化。而互联网通信协议HTTP是一个无状态协议。这也就意味着资源的状态都保存在服务器端,有客户端发起POST,PUT等操作,引起服务器对资源进行操作,发生“状态的转化”。
4、资源的链接(超媒体概念)
资源的链接可以理解为从一个资源跳转到另一个资源
实际应用中我们发起对一个接口的请求,接口会返回一些数据,这些数据可能除了图片、json字符串等,有时候还会包含一个地址,这个地址往往是对下一个资源请求的地址。
5、HTTP动词

小结
综合上面的解释,我们总结一下什么是RESTful架构:
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。
经过上面的了解,回过头来再看看我之前设计的接口URL,列如:htpp://localhost/Person/GetAll。真是被老同事一语中的哇。。。


