Restful风格设计

REST 风格

REST 风格最早由 Roy Thomas Fielding 博士提出, REST 是一种系统架构设计风格,主要面向基于网络的软件架构设计。这一架构风格,包含了以下一些基本要求:

客户-服务器

在 REST 风格中,最基本的要求就是对于一个程序来说,应当分离用户接口和数据存储,改善用户接口跨平台迁移的可移植性,同时简化服务器组件,改善系统的可伸缩性。

对于这一点,目前我们所接触到的大多数应用都已经使用了这一模式,无论是浏览器,还是自主开发的客户端程序,其根本的实现方式都是采用了 客户-服务器 模式。客户端负责与用户之间的交互处理,而服务器端则实现数据存储以及相关的业务逻辑。

同时,对于服务器端,完整的系统大部分情况下都会包含多个不同的模块,这些模块之间的调用也应当遵循 客户-服务器 的模式,模块之间通过接口进行互相访问。

无状态

服务端在设计接口时,应当设计为无状态接口。也就是说,服务器端不保存任何与客户端相关的状态上下文信息,客户端在每次调用服务端接口时,需要提供足够的信息,以供服务端完成操作。

在无状态的设计中,服务端减少了保存客户端相关上下文数据,因此,一方面服务端能够更加容易的实现动态扩展,而不至于影响客户端使用;另一方面则减少了服务端从故障中恢复的任务量。

但无状态也会带来额外的问题。客户端将需要保存完整的用户状态信息,在每次与服务端交互时可能需要增加与用户状态相关的上下文信息,这样将导致请求数据的重复和增大。

缓存

根据接口的实际情况,应当在接口设计中增加缓存策略,服务端可以决定是否可以缓存当前返回的数据。通过此种方式,可以在一定程度上减少实际到达服务端请求,从而提高网络访问性能。

但缓存需要谨慎使用,缓存哪些数据,缓存过期时间都是需要根据实际情况进行设计。适当的缓存可以有效的提高系统效率,但是如果设计不当,将有可能导致大量的过期数据,进而影响系统运行。

一般而言,数据字典类数据、修改频率非常低的数据、实时性要求很低的数据等,这些数据可以设计一定的缓存策略,以提高系统运行效率。

系统分层

在设计系统,尤其是大型系统,通常需要将系统按照不同的功能进行横向和纵向的分层。例如横向分层一般可分为交互层、服务层、数据层等,而纵向分层则通常会按照不同的业务功能对系统进行切分。经过分层后,系统将划分为不同的模块进行独立开发部署运行。系统分层后,不同的模块可以独立进化,实现功能解耦,提高整个系统的可扩展性。

统一接口

统一接口,即是不同系统模块之间的调用接口统一规范,使用统一的调用协议,统一的数据格式等。统一接口带来的是系统交互的规范化,接口调用与业务解耦,各模块独立进化。

以上即是对于 REST 风格的解释说明。REST 本身是一种系统架构设计风格,因此其更加偏向理论性。以下的内容将专注于实际场景中运用 REST 风格。


Restful 实现

REST 风格是面向网络的软件架构设计风格,其针对的是基于网络的软件架构。当软件架构设计符合 REST 风格时,则可以描述为该设计是 Restful 的。而在实际场景中,REST 论文中描述了应用 REST 风格基本方式,即 REST (表述性状态转移)。

面向资源

网络上的一个实体,一个具体信息,都可以描述为一个 资源 ,资源可以是文本、图片、音频、服务等具体存在。在网络中,每种资源都对应与一个 URI (统一资源标识符)地址,通过 URI 就可以访问到该资源。而我们通常的上网,即是对资源的各种操作。

在 Restful 架构中,所

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值