RESTful的理解

2021-11-02  本文已影响0人  今年五年级

引子

大白话讲RESTful API
用URL定位资源,用HTTP描述操作

API:application programming interface 应用程序编程接口
RESTful前面的REST是什么呢?
REST就是representation state transfer表示层状态转移。首发于2000年一个博士的论文中。REST没有明确的标准,而是一种设计风格,符合REST风格的api称为RESTful API

为什么RESTful变得流行

在互联网发展初期,移动端没有现在这么百花齐放,页面请求和并发都不高。那时候使用asp,jsp的整页刷新的动态页面技术尚可。

随着互联网和移动设备的发展,人们对web应用的使用需求也增加,传统的动态页面由于整页刷新效率较低渐渐被HTML+JS(ajax)的前后端分离技术取代,且安卓,ios,微信小程序等形式客户端层出不穷,客户端种类多元化,客户端和服务端需要接口通信,而接口的规范性就成为问题

所以一套结构清晰符合标准易于理解扩展方便,让大部分人能够理解接收的接口风格就显得极为重要

现在,RESTful是目前最流行的接口设计规范

RESTful API特点

  1. 以资源为基础:资源可以是json格式、xml、html、图片、视频。除了二进制的资源,其他更多以json为载体,面向用户的数据,一般通过数据库中查询取得
  2. 统一接口:对资源的操作包括获取,创建,修改和删除,这些操作正好对应http协议提供的GET、POST、PUT、DELETE方法,即使用HTTP动词表示增删改查资源

有些同学可能会说,GET、POST我也经常用啊。但是在网站里的GET和POST同RESTFul中的GET、POST是不一样的。网站里使用GET、POST的选择点在于,简单的用GET、复杂对象用POST;但在REST里,GET对应的是查询一个资源,而POST对应的是新增一个资源,意义是决然不同的。理解这一点非常重要

  1. 无状态:一次调用一般就会返回结果,服务器不能保存客户端的信息,每一次从客户端发送的请求中,要包含所有必须的状态信息
  2. URL中只有名词:不出现动词,且推荐用复数形式
  3. HTTP状态码:使用正确的HTTP Status Code表示访问状态

开始设计RESTful API

首先我们来了解一下标准的URL设计规范:
url为统一资源定位符,接口属于服务端资源,首先通过url定位到资源才能访问,通常一个完整的url由以下几部分构成
URL=scheme "://" host ":" port "/" path ["?" query]["# fragment]

由上面可以看到,我们在设计RESTful API的时候需要考虑的重点是path部分,通常一个RESTful API的path组成如下:
/{version}/{resources}/{resource_id}

/{version}/{resources}/{resource_id}/{subresources}/{subresource_id}
那么RESTful API的URL具体设计规范可以概括如下:

  1. api必须有version版本标志
  2. 使用token令牌来做用户身份校验、权限分级,而不是cookie
  3. 不要大写字母,所有单词使用英文小写
  4. 连字符用中杠"-",而不是下杠“_”
  5. URL中不出现动词,用请求方式表示动作
  6. 资源表示用复数不用单数
  7. 正确使用"/"表示层级关系,URL的层级不要过深

常用状态码
服务端处理完成后客户端可能不知道具体成功还是失败了,服务端响应时,包含状态码返回数据两部分
状态码分类:
1xx:相关信息
2xx:操作成功
3xx:重定向
4xx:客户端错误
5xx:服务端错误

常用细分状态码:

针对不同操作,服务器向用户返回数据,而各个团队或公司封装的返回实体类也不同,但都返回JSON格式数据给客户端

RESTful API案例

如用户场景
非RESTful
获取用户:/users/query/{userid}
插入用户:/users/add
更新用户:/users/update/{userid}
删除用户:/users/delete/{userid}

RESTful版本
GET: /users/{userid}
POST: /users
PUT: /users/{userid}
DELETE:/users/{userid}

使用postman进行发送请求的时候,有三种常用的文件类型传递到后端:

Postman中几个body请求格式区别及使用说明

RESTful API缺点

RESTful风格的API 固然很好很规范,但大多数互联网公司并没有按照或者完全按照其规则来设计,因为REST是一种风格,而不是一种约束或规则,过于理想的RESTful API 会付出太多的成本

缺点:

所以,当你或你们的技术团队在设计API的时候,如果使用场景和REST风格很匹配,那么你们可以采用RESTful 风格API。但是如果业务需求和RESTful风格API不太匹配或者很麻烦,那也可以不用RESTful风格API或者可以借鉴一下,毕竟无论那种风格的API都是为了方便团队开发、协商以及管理,不能墨守成规

参考:https://jishuin.proginn.com/p/763bfbd690c9

上一篇 下一篇

猜你喜欢

热点阅读