[点晴永久免费OA]网络通信:RESTful API 接口定义规范
当前位置:点晴教程→点晴OA办公管理信息系统
→『 经验分享&问题答疑 』
RESTful是目前最流行的API设计规范,它是用于Web数据接口的设计。从字面可以看出,他是Rest式的接口,所以我们先了解下什么是Rest。 REST与技术无关,它代表的是一种软件架构风格,REST它是 Representational State Transfer的简称,中文的含义是: "表征状态转移" 或 "表现层状态转化"。它是基于HTTP、URI、XML、JSON等标准和协议,支持轻量级、跨平台、跨语言的架构设计。 一.理解为什么要使用RESTful API设计规范?在很久以前,工作时间长的同学肯定经历过使用velocity语法来编写html模板代码,也就是说我们的前端页面放在服务器端那边进行编译的,更准确的可以理解为 "前后端没有进行分离",那么在那个时候,页面、数据及模板渲染操作都是放在服务器端进行的,但是这样做有一个很大的缺点是: 后期维护比较麻烦,前端开发人员还必须掌握velocity相关的语法。因此为了解决这个问题慢慢就出现了前后端分离的思想: 即后端负责数据接口, 前端负责数据渲染, 前端只需要请求下api接口拿到数据,然后再将数据显示出来。因此后端开发人员需要设计api接口,因此为了统一规范: 社区就出现了 RESTful API 规范,其实该规范很早就有的,只是最近慢慢流行起来,RESTful API 可以通过一套统一的接口为所有web相关提供服务,实现前后端分离。 二.Rest设计原则那么怎么样可以设计成REST的架构规范呢? 需要符合如下的一些原则:
符合上述REST原则的架构方式被称作为 RESTful 规范。 理解为什么所有的操作需要无状态呢?http请求本身是无状态的,它是基于 client-server 架构的,客户端向服务器端发的每一次请求都必须带有充分的信息能够让服务器端识别到,请求的一些信息通常会包含在URL的查询参数中或header中,服务器端能够根据请求的各种参数, 不需要保存客户端的状态, 直接将数据返回给客户端。无状态的优点是:可以大大提高服务器端的健状性和可扩展性。客户端可以通过token来标识会话状态。从而可以让该用户一直保持登录状态。 理解规范统一的接口Rest接口约束定义为: 资源识别;请求动作;响应信息; 它表示通过uri表示出要操作的资源,通过请求动作(http method)标识要执行的操作,通过返回的状态码来表示这次请求的执行结果。 可能看上面的解释还不够理解,下面我通过自己的理解来解释下上面的具体含义; 比如说,我在未使用Rest规范之前,我们可能有 增删改查 等接口,因此我们会设计出类似这样的接口: /xxx/newAdd (新增接口), /xxx/delete(删除接口), /xxx/query (查询接口), /xxx/uddate(修改接口)等这样的。增删改查有四个不同的接口,维护起来可能也不好,因此如果我们现在使用Restful规范来做的话,对于开发设计来说可能就只需要一个接口就可以了,比如设计该接口为 /xxx/apis 这样的一个接口就可以了,然后请求方式(method)有 GET--查询(从服务器获取资源); POST---新增(从服务器中新建一个资源); PUT---更新(在服务器中更新资源),delete---删除(从服务器删除资源),PATCH---部分更新(从服务器端更新部分资源) 等这些方式来做,也就是说我们使用RESTful规范后,我们的接口就变成了一个了,要执行增删改查操作的话,我们只需要使用不同的请求动作(http method)方式来做就可以了,然后服务器端返回的数据也可以是相同的,只是我们前端会根据状态码来判断请求成功或失败的状态值来判断。具体有那些状态码我们下面会讲解到。 理解返回一致的数据格式服务器端返回的数据格式可以是XML、或json. 或者直接返回状态码的方式。比如返回错误的格式json数据如下:
返回正确的数据格式的json数据一般可以为如下:
三. URL及参数设计规范uri设计规范
比如 xxx.com/xx-yy 比 xxx.com/xx_yy中的可读性更… 在RESTful架构中,每个uri代表一种资源,因此uri设计中不能使用动词,只能使用名词,并且名词中也应该尽量使用复数形式。使用者应该使用相应的http动词 GET、POST、PUT、PATCH、delete等操作这些资源即可。 那么在我们未使用RESTful规范之前,我们是如下方式来定义接口的,形式是不固定的,并且没有统一的规范。比如如下形式:
如上我们可以看到,在未使用Restful规范之前,接口形式是不固定的,没有统一的规范,下面我们来看下使用RESTful规范的接口如下,两者之间对比下就可以看到各自的优点了。
如上我们可以看到,增删改成我们都是使用同一个api接口,只是请求的方式 GET(查询)、POST(新增)、delete(删除)、PACTH(部分更新)来代表的是增删改查操作的方式。然后开发获取到该请求的header头部信息,就可以知道是什么方式来请求数据的了。 HTTP请求规范GET (select): 查询;从服务器取出资源. 参数命名规范参数推荐采用下划线命名的方式。比如如下demo:
四. http状态码相关的状态码范围客户端的每一次请求, 服务器端必须给出回应,回应一般包括HTTP状态码和数据两部分。 1xx: 信息,请求收到了,继续处理。 2xx 状态码200 OK [GET]: 服务器端成功返回用户请求的数据。 4xx状态码400:Bad Request - [POST/PUT/PATCH]: 用户发出的请求有错误,服务器不理解客户端的请求,未做任何处理。 5xx 状态码5xx 状态码表示服务器端错误。 500:INTERNAL SERVER ERROR; 服务器发生错误。 五. 统一返回数据格式RESTful规范中的请求应该返回统一的数据格式。对于返回的数据,一般会包含如下字段:
当status的值为 'fail' 或 'error'时,需要添加 message 字段,用于显示错误信息。
返回成功的响应JSON格式一般为如下:
返回失败的响应json格式为如下:
该文章在 2022/4/18 16:39:08 编辑过 |
关键字查询
相关文章
正在查询... |