一、前后端分离介绍
前提:基于Python、Django基础,环境配置
Django框架
- 模板语言开发(前后端不分离)
前后端不分离: 耦合度比较高
前后端分离(返回Json或xml数据):
耦合度比较低
后端:提供数据、接口
前端:对接接口、展示数据
前后端分离(优点):
多端适应
开发效率提高
前后端开发职责清晰
前后端开发语言不需相同
前后端部署在个自服务器上,服务器压力减小
前后端分离(缺点):
前端程序员开发量增加
后端程序员需要写一个详细文档
SEO难度增加(都是AJAX,像一些初级爬虫全部挡在外面,比如一些搜索引擎,这样你的排名下降)
二、RESTful Api设计(规范)
一个视图对应一个api(接口)
1、域名(url)
api尽量部署在专属域名下
https://api.xxx.com(跨域问题)
api简单,不会再有扩展,可以放在主域名下
https://xxx.com./api
2、协议: 推荐使用HTTPS
3、版本: (API版本号应该放入URL)
5000用户 ---6.0版本 2500用户 ---7.0版本
https://xxx.com/api/v1.0 (返回1.0数据) https://xxx.com/api/v2.0 (返回2.0数据)
4、路径: (推荐使用名词+复数)
https://xxx.com/apples (获取所有苹果)
https://xxx.com/apples/1 (获取id为1的苹果)
5、HTTP请求方法
数据的元操作CRUD(create、read、update、delete)
GET: 获取资源 POST: 新增资源 PUT: 更新(全部)资源
PATCH: 选择性更新 DELETE: 删除资源
6、信息(分页page)
https://xxx.com/apples/?page=2
7、状态码
200 成功返回 201 创建、修改成功
403 禁止访问 404 未找到 405 方法不允许
500 服务器错误
8、错误处理
9、返回数据: 返回json数据
三、Django REST framework框架(DRF)
官方文档https://www.django-rest-framework.org/
源码地址https://github.com/encode/django-rest-framework/tree/master
安装pip install -i https://pypi.douban.com/simple djangorestframework==3.8.2
四、使用Django REST framework框架(DRF)
序列化:
把数据类型(例如字典)转换成可传输的数据的过程
反序列化:
把可传输的数据转换成数据类型的过程叫做反序列化
小组、学生 之间的关系(一对多)
五、普通序列化
1、把模型数据转换为可传输的json数据
2、把可传输的json数据转换为模型数据
可以帮助我们验证数据的完整性(是否正确)