drf---web开发模式,api接口,drf快速使用
web开发模式
市面上的软件百分之九十都是web软件,只要是通过http,websocket这种协议通信的都是web开发模式。
两大种web开发模式:
前后端混合开发
既要写后端(django:python界的web框架),又要写前端(js,css,html + 模板语法(dtl))
例如:bbs项目和图书管理系统
大一点公司,如果写前后端混合项目:后端人员写后端+模板语法,前端人员写js,css,html
小公司,完全一个人写
前后端分离
后端人员只写后端,一点前端都不碰,对外提供【接口】 (django,flask,sanic,fastapi,springboot,gin,beego)
前端人员只写前端,模板语法压根不知道 (vue,react)
如果使用前后端分离模式:dtl,模板语法,完全没有用武之地
api接口和测试工具
api接口简介
api接口就是前端和后端信息交互的媒介。简单的说,别人提供的一些资源,以api接口的形式给你,你直接访问就可以拿到。
例如微博对外提供的api接口,我们就可以利用微博开放的api接口,写出微博的项目,eg:展示最近微博热点新闻的app。
接口的概念很大,但是api接口只针对http请求返回xml,json数据的这种接口。
api接口测试工具
我们写完了接口,不知道它对不对,有没有问题,这个时候我们就可以使用api接口测试工具进行测试。常用的测试工具:postman。
postman就是一个替代浏览器,发送http请求的工具。因为用浏览器不能发送post请求,只能用代码写ajax发请求,通过postman可以发送任意请求。
使用方法:
第一步:先点+号新增一个tab,然后输入接口地址,左边下拉框选择请求的方式,然后点击蓝色的Send进行请求的发送。
第二步:点击Body请求体,选择自己想要的编码格式,填写数据然后进行数据提交。
高级用法:创建一个Collections,在创建的Collections下面导入多个aip接口(测试数据都带着,不会丢),即可进行批量管理。
restful规范
什么是restful规范
写api接口写的时候为了在团队内部形成共识、防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写的接口,用途一目了然,减少双方之间的合作成本。所以就有了restful规范。
RESTful是一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”。
restful规范10条规范
1.使用https数据交互
http+tsl/ssl=https 比http更安全,交互是加密传输
交互用json,如果很轻易被截获,明文显示给别人,数据不安全.
2.接口地址中带api标识
https://api.baidu.com/books 域名中
https://www.baidu.com/api 地址中
3.接口地址中标识版本标识
eg:https://api.baidu.com/v1
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.地址中带搜索条件
eg: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.响应中带链接地址
序列化反序列化
序列化
序列化就是把识别的数据转换成指定的格式提供给别人。
例如:我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以我们需要把数据进行序列化,变成字符串或者json数据,提供给别人。
反序列化
反序列化就是把别人提供的数据转换/还原成我们需要的格式。
例如:前端js提供过来的json数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样我们才能把数据保存到数据库中。
站在后端开发的角度看前后端分离开发中的序列化和反序列化。序列化就是read(别人读我的数据),就是把数据从后端给到前端。反序列化就是write(别人给我数据--》存到数据库),前端给后端数据。
drf快速使用
drf是djangorestframework 的缩写,它是djagno的一个app(第三方插件),只能用在django框架上。可以帮助我们快速的写出符合restful规范的接口。
drf和django的版本有一定的对应关系,如果是django2.2.2,drf最新可能不支持(稍微降一下drf版本)。
安装
pip3 install djangorestframework
或者在pycharm的settings里面进行下载安装。
快速使用
以后见到的所有接口,都是这5个和变形
-增加图书
-获取一本图书
-获取所有图书
-删除一本图书
-修改一本图书
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 数据并发安全校验处理工具类