drf-drf入门规范

一 Web开发模式

前后端混合开发模式:

  • 前端写模板,后端处理完数据再渲染后再传给前端展示效果
    image

前后端分离开发模式:

  • 前端发送请求把数据传给后端,后端查询数据处理完以json格式返回给前端,前端渲染完展示页面
    image

二 API接口

API四大特点

# api接口:通过网络,规定了前后台信息交互规则的url链接,也就是前后台信息交互的媒介
	https://www.baidu.com/books/--->json 格式数据/xml格式---》接口
	json格式:{''}字符串
    xml格式:HTML

# Web API接口和一般的url链接还是有区别的,Web API接口简单概括有下面四大特点
	1 url:长得像返回数据的url链接
    https://api.map.baidu.com/place/v2/search
    2 请求方式:get、post、put、patch、delete
    
    3 请求参数:json或xml格式的key-value类型数据
		-ak:6E823f587c95f0148c19993539b99295
		-region:上海
		-query:肯德基
		-output:json
	
	4 响应结果:json或xml格式的数据
    https://api.map.baidu.com/place/v2/search?ak=6E823f587c95f0148c19993539b99295&region=%E4%B8%8A%E6%B5%B7&query=%E8%82%AF%E5%BE%B7%E5%9F%BA&output=json
	
	# 数据由ajax技术自动转为json格式(字符串)传到后端,后端转为别的格式处理完再以json格式返回给前端
	

三 接口测试工具

工具:

-postman:浏览器插件,收费
-apifox:Postman + Swagger(接口文档) + Mock(假数据) + JMeter(压测工具)
-postwoman:开源

# 下载和安装
	-https://www.postman.com/
    -双击:Postman-win64-Setup.exe  下载后的软件

postman的路由地址:

1、不会自动补充/
2、在浏览器中会自动补充/,因为它有重定向,当报错是3xx时,会自动再发送一次请求

image

image

image

postman前端编码格式(重要)

1、前端不同编码格式
1、urlencoded

body体中:username=lqz&password=123 django的request.POST取出值

2、json

body体中 :{"username":"lqz","password":"123"}  django  的request.POST取不出值

3、form-data

body中格式固定:数据部分和文件部分--》request.POST能取出数据,取不出文件,文件都是从request.FILES
      # 以后一般只传文件,不会文件和数据一起修改
    '----------------------------789048583058585187025897\r\nContent-Disposition: form-data; name="username"\r\n\r\nlqz\r\n 文件二进制'  # 上传图片文件,返回数据,前面是路由,后面是图片的二进制
    # hander请求头
    # \n请求尾
    # \r\n\r\n结束

2、不用pycharm创建项目

  • django-admin startproject 项目名

3、django中的文件对象和原来的文件对象

	-django:from django.core.files.uploadedfile import InMemoryUploadedFile
    -原生文件:_io.BufferedWriter
    -django中文件类没有继承原生文件类,但是由原生文件类所有方法

四 RESTful API规范

RESTful是一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中
事实上,我们可以使用任何一个框架都可以实现符合restful规范的API接口。
4.1 数据的安全保障

  • url链接一般采用https协议进行传输
    https是:http+ssl 安全的超文本传输协议

4.2 接口特征表现

4.3 多数据版本共存

4.4 数据即是资源,均使用名词(可复数)

4.5 资源操作由请求方式决定(method)
-get 请求获取数据(获取所有,获取单条)
-post 新增数据
-put 修改数据
-delete 删除数据

4.6 请求地址中带过滤条件

  • 只针对于搜索所有接口
    get请求

4.7 响应状态码(两层)
-1xx表示请求正在处理:前端一般看不到

-2xx 表示请求处理成功:经常看到

  • 200:常规请求
  • 201:创建成功

-3xx:重定向

  • 301:永久重定向
  • 302:暂时重定向

-4xx:客户端错误

  • 403:请求无权限
  • 404:请求路径不存在
  • 405:请求方法不存在

-5xx:服务端出错

  • 500:服务器异常

-MySQL错误操作都会有数字(如:10060) 和文字解释

错误代码	错误信息	详细描述
10001	System error	系统错误
10002	Service unavailable	服务暂停
10003	Remote service error	远程服务错误
10004	IP limit	IP限制不能请求该资源
10005	Permission denied, need a high level appkey	该资源需要appkey拥有授权

4.8 响应中带错误信息

{
    "code": 101,
    "msg": "用户名或密码错误"
}

4.9 不同操作,服务器返回格式符合如下标准

GET /collection:返回资源对象的列表(数组)
	# [{name:西游记,price:19},{name:三国,price:19}]
GET /collection/resource:返回单个资源对象
	# {name:三国,price:19}
POST /collection:返回新生成的资源对象
	# {name:三国,price:19}
PUT /collection/resource:返回完整的资源对象
	# {name:三国演绎,price:19}修改
PATCH /collection/resource:返回完整的资源对象
DELETE /collection/resource:返回一个空文档

4.10 响应中带链接

五 序列化

序列化(jump):把我们识别的数据转换成指定的格式给别人
例如:把数据(python对象:字典、列表)变成字符串或json格式给前端
反序列化(load):把别人给的数据转换/还原成我们需要的格式
例如:把前端js的json数据,对于python是字符串,给后端转换成对象(字典、列表等)

六 Django Rest_Framework

官方文档:https://www.django-rest-framework.org/
github: https://github.com/encode/django-rest-framework/tree/master

安装

1 django 是2版本,用不了drf最新(适当降版本),他会卸载django--->装最新4.x
2 djagno 3.1.12 可以使用drf最新
django:3.1.12
drf:3.14.0

前提是已经安装了django,建议安装在虚拟环境
pip install djangorestframework
pip install pymysql

创建django项目

cd ~/Desktop
django-admin startproject drfdemo

添加rest_framework应用

INSTALLED_APPS = [
     'rest_framework',  # 一定不要忘了加 ,
]

image

posted @ 2023-12-20 20:55  一粒可海棠  阅读(23)  评论(0编辑  收藏  举报