最近一段时间,一直在低头敲代码,开发平台对外交互的API接口,功能已经大致完成了,回过头来看看本身的接口设计文档,不胜感慨,想当初本身也是为“接口名称”想破了脑壳,各类百度英文。今天一位老同事走过来看了一眼,随口说了一句,你这接口一点Restful风格没有。。。看一眼你的接口命名规则就知道,我只能点点头,也是。html
以前也有接触过REST接口设计风格,时间长了,终究仍是都还回去了。今天也是准备把这块知识点拾掇起来,再从新认识一下,感兴趣的同窗能够一块儿来了解了解。json
先简单说说什么是Restful API安全
RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可使用XML格式定义或JSON格式定义。服务器
RESTFUL是一种架构风格,定义了一组规则和约束,符合REST风格的API接口称做为Restful API。网络
REST(Representational State Transfer)中文翻译过来能够理解为“表现层状态转化”架构
主要特色:
1.资源spa
REST全称是表现层状态转化,那究竟指的是什么的表现? 其实指的就是资源,现实网络中各类各样信息的传递,交互,咱们能够将这些信息抽象为资源,好比一张图片,一段文本,一个文件等。翻译
在网络中咱们使用“统一资源标识”即URI(Uniform Resource Identifier)来标识一个资源,相似于给你一张身份证,你们根据身份证就能知道你是谁。设计
REST风格能够说是“面向资源”的,它请求的是一个资源,该资源每每用一个名词表示,不会出现动词(也是区别于RPC风格的一点)。orm
2.表现层
REST全称是表现层状态转化,既然是面向资源,为何不叫“资源状态转化”呢?
咱们会发现每每在网络中交互的都是xml,json,html等格式数据,这些格式能够理解为资源对外表现的一种形式,这也就说明了实际上网络中交互的是“资源的表现”,并不仅是单纯的资源自己。
3.状态的转化
现实网络中,每每是客户端发起一个请求,服务端进行相应的回应。在这个过程当中,势必涉及到数据和状态的变化。而互联网通讯协议HTTP,是一个无状态协议。这也就意味着,资源的状态都保存在服务器端。由客户端发起POST,PUT等操做,引发服务端对资源进行操做,发生“状态的转化”。
4.资源的连接(超媒体概念)
资源的连接能够理解为从一个资源跳转到另外一个资源
实际应用中咱们发起对一个接口的请求,接口会返回一些数据,这些数据可能除了图片,json字符串等,有时候还会包含一个地址,这个地址每每是对下一个资源请求的地址。
5.HTTP动词
GET-查询 安全,幂等性
POST-新增或者更新 非安全,非幂等性
PUT(客户端提供改变后的完整资源)-更新 非安全,幂等性
PATCH(客户端提供改变的属性)-更新 非安全,幂等性
DELETE-删除 非安全,幂等性
安全性:操做不会改变资源的状态
幂等性:操做一次和操做N次,对资源改变的效果是同样的。
综合上面的解释,咱们总结一下什么是RESTful架构:
(1)每个URI表明一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端经过四个HTTP动词,对服务器端资源进行操做,实现"表现层状态转化"。
通过上面的了解,回过头来再看看我以前设计的接口URL,好比:htpp://localhost/Person/GetAll。真是被老同事一语中的哇。。。