drf---web开发模式,api接口,drf快速使用

web开发模式


市面上的软件百分之九十都是web软件,只要是通过http,websocket这种协议通信的都是web开发模式。

两大种web开发模式:

前后端混合开发

既要写后端(django:python界的web框架),又要写前端(js,css,html  + 模板语法(dtl))
例如:bbs项目和图书管理系统
大一点公司,如果写前后端混合项目:后端人员写后端+模板语法,前端人员写js,css,html
小公司,完全一个人写

XWEh7D.png

前后端分离

后端人员只写后端,一点前端都不碰,对外提供【接口】  (django,flask,sanic,fastapi,springboot,gin,beego)
前端人员只写前端,模板语法压根不知道   (vue,react)
如果使用前后端分离模式:dtl,模板语法,完全没有用武之地

XWEXB8.png

api接口和测试工具


api接口简介

api接口就是前端和后端信息交互的媒介。简单的说,别人提供的一些资源,以api接口的形式给你,你直接访问就可以拿到。

例如微博对外提供的api接口,我们就可以利用微博开放的api接口,写出微博的项目,eg:展示最近微博热点新闻的app。

接口的概念很大,但是api接口只针对http请求返回xml,json数据的这种接口。

api接口测试工具

我们写完了接口,不知道它对不对,有没有问题,这个时候我们就可以使用api接口测试工具进行测试。常用的测试工具:postman。

postman就是一个替代浏览器,发送http请求的工具。因为用浏览器不能发送post请求,只能用代码写ajax发请求,通过postman可以发送任意请求。

使用方法:

第一步:先点+号新增一个tab,然后输入接口地址,左边下拉框选择请求的方式,然后点击蓝色的Send进行请求的发送。

XWV99s.png

第二步:点击Body请求体,选择自己想要的编码格式,填写数据然后进行数据提交。

XWVPcq.png

高级用法:创建一个Collections,在创建的Collections下面导入多个aip接口(测试数据都带着,不会丢),即可进行批量管理。

XWV8HO.png

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   重定向  301302 301302的区别?一个是临时重定向一个是永久重定向
		-4xx   客户端错误 403404  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个和变形

-增加图书
-获取一本图书
-获取所有图书
-删除一本图书
-修改一本图书
posted @   早安_1207  阅读(307)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 数据并发安全校验处理工具类
返回顶端
点击右上角即可分享
微信分享提示