Restful api初识

131 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

作者按:

什么是restful?什么是api?两者组合起来又是什么?api我们能否大概能理解成,就是客户端和他们想要的资源或者web服务之间的快递员。带着疑惑就来研究一番。

1、关于REST

这是一种软件架构风格,是英文(Representational State Transfer)的缩写,翻译为表现层状态转换,是由Roy Thomas Fielding博士创建的,在他的博士论文中提出的。这个架构并没有创造新技术、组件或者服务,不是一种标准,主要是一种架构的约束条件和原则,是一种软件架构的风格,一种设计风格。目的就是为了在符合架构原理前提下,能够理解和评估在网络基础上的应用软件的架构设计,得到功能强、性能好、适宜通信的架构。(作者文章中所表达)就是说符合这个风格的架构都叫做restful,遵循rest架构风格的应用编程接口estful web的应用服务进行交互,就称为restfulapi。

2、RESTful

理解RESTful架构,需要结合REST六个指导原则,来列举下

  1. 统一接口(uniform interface)

统一接口是这个设计风格的基本出发点,减少耦合性,能够让各模块独立进行改进、有四个限制

  1. 请求中包含资源id,唯一标识客户端和服务器之间交互的每一个资源
  2. 资源通过标识来操作,统一的表示形式,api使用这些修改服务器中资源状态
  3. 消息自我描述性,能够携带足够的信息描述要处理的消息
  4. 超媒体驱动应用状态,使用超链接动态驱动其他资源交互
  5. 客户端-服务器(client-server)
    将客户端用户界面关注的逻辑和数据存储关注的逻辑分开(客户端服务器分开),提高跨平台一致性、简化服务器模块,提升可扩展性
  6. 无状态(stateless)
    (1)服务器不保存客户端信息,客户端发送的请求,包含所有必须的状态信息,会话信息由客户端保存,服务器端根据状态信息处理请求
    (2)服务器可以将会话状态信息传递给其他例如数据库服务,保持一段时间的状态信息,实现认证等功能
    (3)客户端可以切换到一个新状态的时候发送请求信息
    (4)一个或多个请求被发送之后,客户端处于一个状态变迁过程
  7. 可缓存(cacheability)
    客户端和通讯传递将会回复缓存起来,可以提升性能以及扩展性
  8. 分层系统(Layered system)
    客户端是不知道是否直接连接到了最终目的服务器,或者是中间服务器,中间服务器可以通过负载均衡或者共享缓存机制,提高系统扩展性,也便于安全策略部署
  9. 按需代码(code-on-demand)(可选)

可以发送可执行代码给客户端的方式临时性扩展功能或者定制功能。(java applet、flash、javascript)允许通过下载和执行小程序或者脚本扩展功能。

3、RESTful API 有哪些特征

1、直观简短资源地址url

例如:cillian.space/resources

2、传输的资源:json、xml、yaml等

3、对资源的操作:post、get、put、delete

4、REST优点

1、利用缓存提高响应速度

2、通讯无状态性可让不同服务器处理一系列请求中的不同请求

3、浏览器即可作为客户端,简化软件需求

4、REST依赖性更小相比于其他在HTTP协议上的机制

5、兼容性更好

5、HTTP状态响应码

状态码由三个十进制数字组成,第一个数字定义类型,共5种:

1XX 相关信息,服务器收到请求,请求者继续执行

2XX 成功,操作被接受并处理

3XX 重定向

4XX 客户端错误,请求语法错误或者无法完成请求

5XX 服务器错误,在处理请求过程中出现错误

6、总结

1、在REST的架构风格中,数据、功能都被视为资源,使用统一资源标识符(定位)(URL)进行访问

2、简单明了的操作来操作资源,资源和表示形式分离,客户端可以访问各种格式的内容,比如html、xml、pdf、JPEG、文本等

3、客户端和服务器通过标准化接口和协议交换资源,通常是http协议,但不强制要求,并且http只是REST架构中一种,http并不等于rest

4、客户端和服务器的交互都必须是无状态的

5、祝学习顺利!