关于RESTful架构的设计

2019-12-24 03:45陈贵民黄惠海郑汉军陈思德
网络安全技术与应用 2019年1期
关键词:客户端架构服务器

◆何 军 陈贵民 黄惠海 郑汉军 陈思德

关于RESTful架构的设计

◆何 军 陈贵民 黄惠海 郑汉军 陈思德

(厦门安胜网络科技有限公司 福建 321008)

REST完整表示的意思是形态的转移,在满足形态架构的基础上,在以网络为基础的应用软件设计的架构上,得到一个功能完善、性能稳定、适合于通信的结构。如果一个平台结构符合REST的原则和约束规范,则说明这是RESTful架构。

资源;URL;链接;版本号

0 前言

软件的版本一般都是存在兼容性的,同时软件也是不断地维护和更新,所以软件在后续的使用过程中,往往会存在多个版本,然而软件的版本需要兼容性,这样软件在新的版本更新时,可以兼容旧的版本,而且对于使用者而言,对于旧功能的请求路径,不会产生影响,对于新的功能请求地址,仍然可以访问。这样对于新旧功能,相互之间不会产生影响,这样对于软件系统的维护与使用,在兼容原有系统的功能的基础,对软件系统实现持续的新增和维护更新,带来了很大的便利,同时也给我们的开发带来了极大的优异[1]。

1 URI的表述

REST全称是表述性状态转移,那表述是什么意思呢? 其实代表的就是资源。任何事物,只要有被引用到的价值,那就可以理解为一个资源。资源可以是实体(例如身份证号码),也可以是一个抽象概念(比如价值多少) 。URI既可以看成是资源的路径,也可以看成是资源的全名。如果某些信息没通过URI来表示,那它就不能算是一个资源, 只能算是资源中的某些信息而已。URI的设计应该遵循可寻址性原则,具有自描述性,需要在表现形式上给人以直观上的关联[2]。

2 资源接口的统一

RESTful结构必须遵从统一接口规则。接口规则需要程序编写者遵循一定的接口规范,有着相应的约束语法规则,这样的约束,既有利于接口资源的统一,同时对于编写者和使用者而言,有规律可遵循。同时,对于资源来说,无论是什么样的资源,都是使用相同的接口进行数据的查询和资源的访问。而且,对于所有的资源接口来说,都要符合HTTP的请求标准。不能逾越http网络传输协议规范。而对于Http来说,它包含get,post,put等方法,例如get是安全且幂等性的,post是不安全和不幂等性的,之所以会产生这种情况,主要是从服务的状态来评定的,倘若不发生改变,则是安全的。倘若发生影响,则是幂等性的。不同方法适用于不同的场景,需要我们在开发过程中根据具体需求做出相应的处理。

3 请求方法实践

(1)HTTP有许多请求方法,put就是其中之一,当客户需要提交数据到数据库时,可以通过put请求方法,put方法在发生请求时,将会更新数据,同时也会将服务器的状态进行相应的改变。因为,当我们在编写更新或者提交数据的接口时,将会采用到put的请求方式。

(2)我们在开发RESTful接口的时候,往往可能存在一些头部参数,或者设置一些透传的属性值,头部参数可能隐含着真实的请求路径或者请求方式,而透传则是请求url时具体的请求参数体,可能是string的格式,也可能是json的格式,这个需要根据具体的业务需求进行确定。

(3)接口统一后仍然可以进行方法的扩展。但前提条件是拓展的方法必须要符合接口的规则和请求规范,不能脱离接口的统一性原则[3]。

(4)虽然我们在开发接口时,需要讲究安全性原则。但是在实际的RESTful的开发过程中,或多或少的还是产生一些负面的作用。同时,服务器在产生源源不断的请求时,这些负面的作用还是伴随着产生,因为,开发人员在设计接口时,要尽可能的考虑到该url在请求时发生的服务器奔溃,空指针异常等负面的影响。

(5)对于接口的开发人员来说,需要制定一套统一的请求状态码,一方面来表示请求是否合法,另一方面也可表示该请求成功与否。而对于这套统一的状态码,需要开发人员与客户相互协调沟通,以此来达到资源接口的统一性。同时,这些状态码要尽可能的详细,通知也要附带一定的指导意思,这样既给后续维护人员带来更新维护上的方面,业方面客户进行理解使用。

4 资源的描述

客户端与服务端之间其实传递的只是一种资源的描述,而不是将资源进行传递。比如说,某些文本数据的传递,我们可以使用json,xml等格式进行传递,然后再将其中的描述在客户端与服务端之间以数据流的形式进行传输,这样不仅可以使得文本数据保持安全性。如果是某些图片的数据,图片资源是无法直接传输的,需要将其描述为流的形式进行传输,当其传输到服务器之后,再进行解析为图片。

5 理解链接

资源之间也是需要链接起来的,这样不同资源之间可以相互关联起来,而非独立。因此在资源的描述中,需要加入链接来引导我们的客户端。往往资源之间需要相互跳转,相互协调的。因此在数据传输的格式中,需要加入链接属性,因此客户端才会根据链接来进行引导[4]。

6 状态的理解

对于一个系统而言,它包含这两种状态,一种是应用的状态,另一种是资源的状态。应用的状态指的是软件系统的状态,而资源的状态指的是资源在请求的过程中,所拥有的状态。因此,前者和客户端有关,后者和服务器有关。而且,这二者之间的交互是无状态的。并且在每次的请求当中,请求体将会包含我们所需的所有资源数据。同时,在实际的请求过程中,服务器才会使用到应用的状态。这种通信原则有一个特点就是服务器和媒介之间可以独立的解析资源请求和响应。当然了,实际的请求中也会有违反无状态通信规则的情况,例如利用客户端上的cookies来记录某一个服务器的会话请求。

7 总结

本文从资源的定义、获取、表述、关联、状态变迁等角度, 试图快速理解RESTful架构背后的概念。RESTful架构与传统的RPC、SOAP等方式在理念上有很大的不同,希望本文能对各位读者理解REST有所帮助。

[1]陈冠元.软件工程中的UML建模技术[J].电子技术与软件工程,2018.

[2]刘传会.基于UML2.0顺序图的高可信实时软件建模技术研究[A].中国航空学会、中国航空研究院,2017.

[3]夏志龙.使用UML和Event-B构建基于云平台的应用软件模型[D].江苏科技大学,2016.

[4]于丽.基于UML的面向对象建模技术研究与应用[J].信息与电脑(理论版),2015.

猜你喜欢
客户端架构服务器
你的手机安装了多少个客户端
基于FPGA的RNN硬件加速架构
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
功能架构在电子电气架构开发中的应用和实践
构建富有活力和效率的社会治理架构
PowerTCP Server Tool
BlackJumboDog
2018年全球服务器市场将保持温和增长
媒体客户端的发展策略与推广模式
VoLTE时代智能网架构演进研究