接口测试工具+drf安装与使用

web开发模式

只要通过http,websocket实现的软件,就可以称为web软件

前后端混合

image.png

如果是前后端不分离的项目:

后端使用Django之类的web框架,前端使用jscsshtml + 模板语法(dtl)

在多人合作的情况下,前端写jscsshtml,后端用web框架写后端代码,并用模板语法(dtl)将前后端拼接起来。

dtl的渲染是在后端执行完成后给到前端,前端只有html,css,js
# 注意
不要js和dtl混写:js前端浏览器执行  dtl在后端服务器的python解释器中执行

前后端分离

image.png

如果是前后端分离的项目:

后端使用web框架(django,flask,sanic,fastapi,springboot,gin,beego)写后端,对外提供接口,前端使用前端框架(vue,react)写前端,并用接口获取数据。

在该模式下:不使用模板语法(dtl)

api接口

前后端信息交互的媒介,叫做接口,接口的概念很大,api接口只针对http请求返回xml,json数据的接口

前端>>>>>>>api接口>>>>>>>>>路由>>>>>>>>视图函数>>>>>>>>返回数据

为了在团队内部形成共识、防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接 口实现规范,而且这种规范能够让后端写的接口,用途一目了然,减少双方之间的合作成本

restful规范

比如微博会对外提供接口:

https://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5

api接口测试工具

后端在开发完接口后需要对接口进行测试:使用postman,postwomen之类的接口测试工具。

请求

接口测试工具可以替代浏览器,发送http请求的工具(因为用浏览器不能发送post请求,只能用代码写ajax发请求,而通过postman可以发送任意请求)

image.png

数据发送

而我们发送给后端的数据也可以修改

image.png

django中,如果使用form-data或者urlencoded编码>>>>>>>>>>提交的数据直接从request.POST取出来
如果是json格式编码,从request.POST取不出来,只能从request.body 取出来,json转一下才能用

批量操作

collection:可以批量的管理,导入导入很多api接口,测试数据都带着,不会丢

image.png

restful规范

RESTful(REST全称是Representational State Transfer,表征性状态转移)是一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中

1 使用https数据交互
		http+tsl/ssl=https   比http更安全,交互是加密传输
  		-交互用json--->如果很轻易被截获--->明文显示给别人,数据不安全
        
2 接口地址中带api标识
    	https://api.baidu.com/books   域名中
    	https://www.baidu.com/api     地址中
            
3 接口地址中标识版本标识
    	-https://api.baidu.com/v1
		-https://api.weibo.com/2/statuses/user_timeline.json
      -登陆功能:用户名密码  如果把原来的接口改了---》老app还能用吗?
      -升级了app:用户名密码验证码  新写一个接口
        
4 数据即是资源,均使用名词,不要出现动词
  		-删除图书接口
    	-好的:https://api.baidu.com/v1/books
		-不好的:https://api.baidu.com/v1/delete-books
		# 新增图书:https://api.baidu.com/v1/books
                
5 资源操作由请求方式决定
  	-新增图书:https://api.baidu.com/v1/books    post
    -删除图书:https://api.baidu.com/v1/books    delete
    -修改图书:https://api.baidu.com/v1/books    put
    -获取图书:https://api.baidu.com/v1/books    get
      
      
6 地址中带搜索条件
  	-https://api.example.com/v1/zoos?animal_type_id=1:指定筛选条件
    -https://api.baidu.com/v1/books?name=红楼梦
      
7 响应状态码
  		-http的响应状态码
    		-1xx   请求正在处理
      	-2xx   成功  200 请求成功    201 创建成功
        -3xx   重定向  301 和 302 ---》问301和302的区别?一个是临时重定向一个是永久重定向
        -4xx   客户端错误 403 和 404  403:没有权限   404:地址不存在
        -5xx   服务端错误 
      -响应中带状态码
      	{code:100}
        
8 响应中带错误信息
  		{code:999,msg:登陆失败}
    
9 针对不同操作,服务器向用户返回的结果应该符合以下规范
      GET /collection:返回资源对象的列表(数组) 
    			-[{name:红楼梦,price:12},{name:西游记,price:12}]
      GET /collection/resource:返回单个资源对象
      		-{name:西游记,price:12}
      POST /collection:返回新生成的资源对象
      		-{name:西厢记,price:12}
      PUT /collection/resource:返回完整的资源对象
      		-{name:西游记,price:12}
      PATCH /collection/resource:返回完整的资源对象
      		-{name:西游记,price:12}
      DELETE /collection/resource:返回一个空文档
      		-
        
10 响应中带链接地址

序列化反序列化

序列化

把我们识别的数据转换成指定的格式提供给别人

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

反序列化

把别人提供的数据转换/还原成我们需要的格式

-前端:字符串,json格式字符串 提交给我们
-python后端:把josn格式字符串转成我们能够识别的格式:字典,对象,qs对象
# 例如:前端js提供过来的json数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样我们才能把数据保存到数据库中。

前后端分离开发中,在后端看来:

序列化 >>>>>>> read(别人读我的数据)>>>>>>>> 后端给前端

反序列化 >>>>>>> wite (别人给我数据 >>>>>>> 前端给后端

drf快速使用

drf(djangorestframework),它是djagno的一个app(第三方插件),只能用在django框架上,可以帮助我们快速的写出符合restful规范的接口。

drf和django的版本有一定的对应关系
python 3.8 
django 2.2.2
drf :3.12.4

安装

# 方式一
pip3 install djangorestframework 

# 方式二
使用pycharm的下载模块的方法

快速使用

# 以后都是写以下的5个或其变种
-增加图书  # 增
-获取一本图书  # 查一部分
-获取所有图书  # 查所有
-删除一本图书  # 删
-修改一本图书  # 改
posted @ 2022-06-14 22:10  Rain_Kz  阅读(101)  评论(0编辑  收藏  举报