前言

web应用的两种开发模式

# 前后端混合

image

# 前后端分离

image

API接口

1.API接口

	团队开发时,通过一种规范,返回特定格式数据的链接,但和一般的url链接还是有区别的
    
2.Web API接口简单概括有下面四大特点

	#1.url: 样式像返回数据的url链接
    #2.请求方式:get、post、put、patch、delete
    #3.请求参数:json或者xml格式的key:value类型数据
    #4.响应结果:json或者xml格式的数据
 
详见:
https://open.weibo.com/wiki/2/users/show

接口测试工具

postman,浏览器插件,接口压力测试工具Jmeter等(本质就是模拟发送http请求)

Postman是一款接口调试工具,是一款免费的可视化软件,同时支持各种操作系统平台,是测试接口的首选工具。

restful规范

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

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

# 1. 使用https协议进行传输数据(保障数据安全)

# 2. 用api关键字标识接口url:
	https://api.baidu.com
	https://www.baidu.com/api
注:看到api字眼,就代表该请求url链接是完成前后台数据交互的

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

# 4. 数据即是资源,均使用名词(可复数)
	https://api.baidu.com/users
注:一般提倡用资源的复数形式,在url链接中奖励不要出现操作资源的动词,错误示范:							https://api.baidu.com/delete-user
特殊的接口可以出现动词,因为这些接口一般没有一个明确的资源,或是动词就是接口的核心含义
	https://api.baidu.com/login

# 5. 资源操作由请求方式决定
	-查询操作---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的书
        
# 6. 请求url中带搜索筛选条件(过滤)
	https://api.example.com/v1/zoos?limit=10:指定返回记录的数量
	https://api.example.com/v1/zoos?offset=10:指定返回记录的开始位置、
    https://api.example.com/v1/zoos?animal_type_id=1:指定筛选条件    
    
# 7. 响应中要带状态码(自己定义,http响应状态码)
        {
        status:200
        }
    
	1 正常响应
        响应状态码2xx
        	200:常规请求
        	201:创建成功
    2 重定向响应
        响应状态码3xx
        	301:永久重定向
        	302:暂时重定向
    3 客户端异常
        响应状态码4xx
        	403:请求无权限
        	404:请求路径不存在
        	405:请求方法不存在
    4 服务器异常
        响应状态码5xx
        	500:服务器异常	

# 8. 响应返回错误信息       
        {
            error: "无权限操作"
        }
    
# 9. 返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范
	GET /collection:返回资源对象的列表(数组)
    GET /collection/resource:返回单个资源对象
    POST /collection:返回新生成的资源对象
    PUT /collection/resource:返回完整的资源对象
    PATCH /collection/resource:返回完整的资源对象
    DELETE /collection/resource:返回一个空文档
    
# 10. 需要url请求的资源需要有访问资源的请求链接
    # Hypermedia API,RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么
    {
        "status": 0,
        "msg": "ok",
        "results":[
            {
                "name":"肯德基(罗餐厅)",
                "img": "https://image.baidu.com/kfc/001.png"
            }
            ...
            ]
    }

规范接口返回示范:

# 响应数据要有状态码、状态信息以及数据本身
{
  	"status": 0,
  	"msg": "ok",
  	"results":[
        {
            "name":"肯德基(罗餐厅)",
            "location":{
                "lat":31.415354,
                "lng":121.357339
            },
            "address":"月罗路2380号",
            "province":"上海市",
            "city":"上海市",
            "area":"宝山区",
            "street_id":"339ed41ae1d6dc320a5cb37c",
            "telephone":"(021)56761006",
            "detail":1,
            "uid":"339ed41ae1d6dc320a5cb37c"
        }
      	...
		]
}

序列化

api接口开发,最核心最常见的一个过程就是序列化,所谓序列化就是把数据转换格式,序列化可以分两个阶段:

序列化: 把我们识别的数据转换成指定的格式提供给别人。

例如:我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以我们需要把数据进行序列化,变成字符串或者json数据,提供给别人。

反序列化:把别人提供的数据转换/还原成我们需要的格式。

例如:前端js提供过来的json数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样我们才能把数据保存到数据库中。

drf介绍和安装

核心思想: 缩减编写api接口的代码
 
# Django Rest_Framework:是django的一个app,可以借助它快速在django框架开发出符合restful规范的接口
# 提供了:REST framework还提供了认证、权限、限流、过滤、分页、接口文档等功能支持
# 官方文档:https://www.django-rest-framework.org/


#安装
	pip3 install djangorestframework
    # 注意:跟django版本对应好,django 2.2.2  drf最新
posted on 2021-07-11 21:08  lzl_121  阅读(30)  评论(0编辑  收藏  举报