Django-drf-Restful规范

web开发模式

  前后端混合开发:较传统的开发模式,前后端不分离,可以说是全栈开发。后端返回前端的是HTML页面,需要在前端写模板语言

  前后端分离:只专注于写后端接口,返回JSON或xml格式的数据(一般都是JSON格式的数据)。这种模式极大的改变了编码思想,后端和前端的概念变的清晰了

Restful规范

  Restful与技术无关,代表的是一种软件架构风格,全称:Representation State Transfer,中文:表征特性状态转义

  Restful是一种web api接口的设计风格,尤其适用于前后端分离的应用模型中。

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

  由于Restful是一种软件架构风格,与技术无关,所以可以使用任意一个框架都可以实现符合Restful规范的api接口

Restful的十条规范

1、数据安全保障:url连接一般都采用HTTPS协议进行传输,提高数据交互过程中的安全性

 

2、接口特征表现:看到url就知道是api接口

1 # 用api关键字标识接口url
2 # 看到api字眼,就代表该url链接是完成前后端数据交互的
3 https://api.example.com/ # 在域名带api
4 https://www.example.com/api/xx # 路径拼接api

 

3、多数据版本共存

1 # 在url链接中标识数据版本
2 https://api.example.com/v1/xx
3 https://api.example.com/v2/xx
4 # url链接中的v1 v2就是不同数据版本的体现(只有在一种数据资源有多版本情况下使用)

 

4、数据即资源,使用名词表示(可复数)

接口一般都是完成前后端数据的交互,交互的数据就是资源

1 https://api.example.com/users
2 https://api.example.com/books
3 https://api.example.com/book
4 
5 # 一般提倡使用资源的复数形式,在url链接中尽量不要出现操作资源的动词,如 6 https://api.example.com/delete-user

特殊的接口可以出现动词,因为这些接口一般没有一个明确的资源,或动词的含义就是接口的核心含义

1 https://api.example.com/place/search
2 https://api.example.com/login

 

5、资源操作由请求方式决定

 常用的几种请求方式

 1 # get 查询所有数据,url不加主键
 2 https://api.example.com/books
 3 
 4 # get请求 查询一条数据,url中加主键值
 5 https://api.example.com/books/1
 6 
 7 # post请求 新增一条数据
 8 
 9 # put请求 整体修改一条数据
10 
11 # patch请求 局部修改一条数据
12 
13 # delete请求 删除一条数据

6、过滤,通过在url上传参数的形式传递搜索条件

 1 # limit 指定返回记录的数量
 2 https://api.exaple.com/v1/zoos?limit=10
 3 
 4 # offset 指定返回记录的开始位置
 5 https://api.exaple.com/v1/zoos?offset=10
 6 
 7 # 指定第几页,以及每页的记录数
 8 https://api.exaple.com/v1/zoos?page=20&per_page=100 
 9 
10 # 指定返回结果按照哪个顺序排序,以及排序顺序
11 https://api.exaple.com/v1/zoos?sortby=name&order=asc 
12 
13 # 指定筛选条件
14 https://api.exaple.com/v1/zoos?animal_type_id=1 

7、通过响应状态码标识请求结果

 1 # 正常响应
 2 200 # 常规请求
 3 201 # 创建成功
 4 
 5 # 重定向响应
 6 301 # 永久重定向
 7 302 # 临时重定向
 8 
 9 # 客户端异常
10 403 # 无权限
11 404 # 请求路径不存在
12 405 # 请求方法不存在
13 
14 # 服务器异常
15 500 服务器异常

8、错误处理,应返回错误信息,一般error当做key

{
    "error": "无权限操作"
}    

9、返回结果规范,针对不同的操作,服务器应向用户返回的结果对象也不通

GET /collection # 返回资源对象的列表(数组)
GET /collection/1 # 返回单个资源对象

POST /collection # 返回新生成的资源对象

PUT /collection/resource # 返回完整的资源对象

PATCH /collection/resource # 返回完整的资源对象

DELETE /collection/resource # 返回空文档,但是实际项目中不推荐返回空,可以返回删除是否成功、状态码

10、请求的结果提供需要访问资源的请求链接,即返回的结果中提供链接,连向其他api的方法,使得用户不用查文档,也知道下一步该怎么做

 1 {
 2     "status":0,
 3     "msg":"ok",
 4     "results":[
 5         {
 6             "name":"肯德基",
 7             "img":"https://image.baidu.com/kef/001.png" # 可以带url
 8         }
 9         ...
10     ]
11 }

总结

  由于前后端分离的开发模式,出现了类似于restful这样的开发规范

  restful规范仅是一种开发规范,并不意味着开发过程中,都必须要遵守规范。

 

END.

 

posted @ 2021-12-14 10:32  hushowee  阅读(117)  评论(0)    收藏  举报