Restful规范

Restful规范

REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征性状态转移)。它首次出现在2000年Roy Fielding的博士论文中

RESTFUL是一种定义Web API接口的设计风格,尤其适合前后端分离的应用模式中。

这种风格的理念认为后端开发任务就是提供数据的,对外提供的是数据资源访问的接口,所以在定义接口时,客户端访问的URL路径就表示这种需要操作的数据资源

事实上,我们可以使用任何一种框架都可以实现符合RESTFUL规范的API接口
  1. 数据的安全保障
url链接一般都采用https协议进行传输,注:采用Https协议,可以提高数据		交互过程中的安全性
  1. 接口的特征表现
     -用api关键字标识接口url:
            -[https://api.baidu.com](https://api.baidu.com/)
            -https://www.baidu.com/api
        注:看到api字段,就代表该请求url链接是完成前后端数据交互的
  1. 多版本共存
-在url链接中标识数据版本
-https://api.baidu.com/v1
-https://api.baidu.com/v2
注:url链接中的v1,v2,就是不同数据版本的提现,(只有在一种数据资源有多版本情况下)
  1. 数据即资源
接口作为前后端交互的媒介其交互的数据又被叫做资源,推荐使用名词或者名词的复数形式,对于某些特殊接口,我们可以使用动词(api/books api/login)
    	- 接口一般都是前后端数据的交互,交互的数据称之为资源
        	- https://api.baidu.com/users
            - https://api.baidu.com/books
  1. **资源操作由请求方式决定 ** (method)
资源的操作我们直接通过提交的请求方式来决定(get、post、put/patch、delete)
 - 操作资源一般都涉及到增删改查,以下请求方式来标识增删改查动作
        https://api.baidu.com/books     -get请求:获取所有书
        https://api.baidu.com/books/1   -get请求:获取主键为1 的书
        https://api.baidu.com/books     -post请求: 新增一本书
        https://api.baidu.com/books/1   -put请求:整体修改主键为1的书
        https://api.baidu.com/books/1   -patch请求:局部修改主键为1 的书
        https://api.baidu.com/books/1   -delete请求:删除主键为1 的书
  1. 过滤
我们可以再url上传参的形式传递搜索条件
    https://api.example.com/v1/people?limit=10  :指定返回记录的数量
    https://api.example.com/v1/people?offset=10 :指定返回记录的开始位置
    https://api.example.com/v1/people?page=2&per_page=100 :指定第几页,以及每页的记录数
    https://api.example.com/v1/people?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序
    https://api.example.com/v1/people?animal_type_id=1 :指定筛选条件
  1. 响应状态码
# 正常响应
    200(正常请求)、
    201(创建成功)、
# 重定向响应
    301(永久重定向)、
    302(临时重定向)、
# 客户端异常
    403(请求无权限)、
    404(请求路径不存在)、
    405(请求方法不存在)、
# 服务端异常
	500(服务器异常)、

  1. 错误处理
应当返回错误信息   error当作key

{
    error:'无权限操作'
}
  1. 返回结果
根据不同的请求以及请求得到的数据, 服务端返回不同的结果
	GET /collection:返回资源对象的列表(数组)
    GET /collection/resource:返回单个资源对象
    POST /collection:返回新生成的资源对象
    PUT /collection/resource:返回完整的资源对象
    PATCH /collection/resource:返回完成的资源对象
    DELETE /collection/resource:返回一个空文档
    
  1. 需要url请求的资源需要访问资源的请求链接
# Hypermedia API ,RESTFUL API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么
    {
        "status":0,
        "msg":"OK",
        "results":[
            {
                "name":"肯德基",
                "img":"https://image.baidu.com/ftc/001.png"
            }
            ........
        ]  
    }  
posted @ 2022-12-12 17:16  ExpiredSaury  阅读(30)  评论(0编辑  收藏  举报