Django REST framework 理解

Web应用模式
1 .前后端不分离:在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与厚度那的耦合度很高.
这种应用模式比较合适纯网页应用,但是后端对接APP时,App可能并不需要后端返回一个HTML网页,二仅仅是数据本身,所以后端原本返回网页的接口不在适用前端APP应用,为了对接APP后端嗨需再开发一套接口
2 前后端分离:在前后端分离的应用模式中,后端仅返回前端所需的数据,不在渲染HTML页面,不在控制前端的效果,只用前端用户看到什么效果,从后端请求的数据如何加载到前端中,都由前端自己决定,网页有网页的处理方式,APP有APP的处理方式,但无论哪种前端,所需要的数据基本相同,后端仅需开发一套逻辑对外提供数据即可.
在前后端分离的应用模式中,前端与后端的耦合度相对较低
在前后端分离的应用模式中,我们通常将后端开发的每一视图都成为一个接口,或者API,前端通过访问接口来对数据进行增删改查
认识RESTful
1.在前后端分离的应用模式里.后端API接口如何定义?
1.POST/add-goods增加商品
2.POST/delete-goods删除商品
3.POST/update-goods修改商品
4.GET/get-goods查询商品信息
2. 名称
具象状态传输” 或者表现层转换化.
RESTful是一种开发理念 . REST是设计风格而不是标准
REST特点:url简洁,将参数通过url传到服务器.
称之为RESTful框架
1.具象的:资源
2.表现:格式
3.状态转换:数据变化
如果客服端想要操作服务器,必须通过某种手段,让服务器端发生"状态转换"
总结:
1.每一个URL代表一种资源
2.客服端和服务器端,传递这个资源的表现层
3.客服端通过四个GTTP动词,对服务器端资源进行操作,实现"表现层状态转化"
表现层状态转化
1.域名
应该尽量将API部署在专用域名之下
如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。
2.版本
应该讲API的版本号放入URL
3,路径
表示API的具体网址,每个网站代表一种资源
1.资源作为网站,不能有动词,而且所用的名词往往与数据库的表名对应
2,API中的名词应该使用复数,无论子资源或者所有资源
动词:GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
DELETE(DELETE):从服务器删除资源。
4.过滤信息
如果技能数量很多,服务器不可能都将它们返回给与用户API应该提参数,过滤返回结果
5.状态码
服务器想用户返回的状态码,和提示信息,
6.错误处理(Error handling)
如果状态码4xx,服务器就应该想用户返回出错信息,
7.返回结果
针对不同操作,服务器想用户返回的结果应该符合以下规范
1.GET/collection:返回资源对象的列表
2.GET/coliection/resource:返回单个 资源对象
3.POST/collection:返回新生成的资源对象
4.PUT/collection/resource返回完整的资源对象
5.PATCH//collection/resource返回完整的资源对象
6.DELECT//collection/resource返回一个空文档
8. 超媒体(Hypermedia API)
9.其他
服务器返回的数据格式,应该尽量使用JSON,避免使用XML。
明确REST接口开发的核心任务之序列化Serialization
序列化:在数据存储于传送的部分是指将一个对象存储至一个储存媒介,可以是字节或是XML等格式,这程序被应用在不同应用程序之间传送对象,以及服务器将对象储存到档案或数据库.相反的过程又称为反序列化
将程序中的一个数据结构类型转换为其他格式(字典JSONXML等)
反之:讲其他格式(字典JSONXML等)转换为程序中的数据,这个过程我们称为反序列化
总结,:视图中需要做的最核心
1.将数据库数据序列化为前端锁需要的格式,并返回.
2.将前端发送的数据反序列化为模型类对象,并保存到数据库中
Django REST framework 简介
序列化和反序列化可以复用
增:效验请求数据>执行反序列化过程>保存数据库>将保存的对象序列化并返回
删:判断要删除的数据是否存在.>执行数据库删除
改:判断要修改的数据是否存在>效验请求的参数>执行反序列化过程>保存数据库>将保存的对象序列化并返回
查:查询数据库>将数据序列化并返回
特点:
1.提供了定义序列化器Serializer的方法,可以快速根据Django ORM 或者其他库自动序列化/反序列化
2.提供了丰富的类视图MIXIN扩展类,简化视图的编写
3.丰富的定制层级:函数视图类视图试图结合到自动生成API,满足各种需要
4.多种身份认证和权限认证方式的支持
5.内置了限流系统
6.直观的API web界面
7.可扩展性 , 插件丰富
作者:SasukeN
来源:CSDN
原文:https://blog.csdn.net/SasukeN/article/details/80906008

识别图中二维码,领取python全套视频资料
Django REST framework 理解的更多相关文章
- 用Django Rest Framework和AngularJS开始你的项目
Reference: http://blog.csdn.net/seele52/article/details/14105445 译序:虽然本文号称是"hello world式的教程&quo ...
- Django REST framework+Vue 打造生鲜超市(四)
五.商品列表页 5.1.django的view实现商品列表页 (1)goods/view_base.py 在goods文件夹下面新建view_base.py,为了区分django和django res ...
- Django rest framework源码分析(1)----认证
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...
- RESTful架构&简单使用Django rest framework
RESTful架构 1 什么是REST REST全称是Representational State Transfer,中文意思是表述性状态转移. 它首次出现在2000年Roy Fielding的博士论 ...
- Python3+PyCharm+Django+Django REST framework开发教程
一.说明 自己一是想跟上潮流二是习惯于直接干三是没有人可以请教,由于这三点经常搞得要死要活.之前只简单看过没写过Diango,没看过Django REST framework,今天一步到位直接上又撞上 ...
- Django Rest framework 之 认证
django rest framework 官网 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest fra ...
- Django REST framework 源码剖析
前言 Django REST framework is a powerful and flexible toolkit for building Web APIs. 本文由浅入深的引入Django R ...
- django rest framework restful 规范
内容回顾: . django请求生命周期 -> 执行遵循wsgi协议的模块(socket服务端) -> 中间件(路由匹配) -> 视图函数(业务处理:ORM.模板渲染) -> ...
- Django Rest Framework源码剖析(六)-----序列化(serializers)
一.简介 django rest framework 中的序列化组件,可以说是其核心组件,也是我们平时使用最多的组件,它不仅仅有序列化功能,更提供了数据验证的功能(与django中的form类似). ...
随机推荐
- 解决select菜单边框无法设置的问题
<span style="border:1px solid green; position:absolute; overflow:hidden"><select ...
- Spider Studio 新版本 (20140108) - 优化设置菜单 / 生成程序集支持版本号
本次更新包含两项改进: 1. 优化了设置菜单, 去掉了一些不必要的浏览器行为设置选项: 取而代之的是在脚本中由用户自行设置: public void Run() { Default.CaptureNe ...
- 03 java基本
输入输出流 标准输出流比较简单, 只需要使用 System.out.println 就可以了, 标准输入流步骤如下: Scanner in = new Scanner(System.in); 然后可以 ...
- 关于Unity的组件和作用
一.Transform组件 整个场景由节点树组成. 节点+Transform组件,每个Transform有自己的孩子Transform,由Transform组成Transform树,而每个Transf ...
- redhat7搭建本地yum仓库
ftp服务器搭建 安装vsftpd yum install vsftpd 配置启动服务和防火墙 修改配置,由于默认不开启主动模式,需要配置开启,在/etc/vsftpd/vsftpd.conf添加如下 ...
- strust2的Action中validateXxx方法的用法
Struts2控制部分时常需要验证来自页面的信息是否合法,若在执行struts2中 public String Xxx()方法操作数据库之前需要验证,ActionSupport提供了一个很好的方法.X ...
- hdu 2059:龟兔赛跑(动态规划 DP)
龟兔赛跑 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- 移动ChemDraw结构有什么方法
ChemDraw软件是一款比较常见的化学绘图软件,化学专业的领域的人常常会用到它.本教程主要是针对新手用户,让其了解一些ChemDraw的一些基本操作,以便其能尽快上手早日用到工作中.下面我们就来给大 ...
- Boatloader的工作流程
(1)第一节阶段的功能 1.硬件设备的初始化 2.载入u-boot第二阶段的代码到我们的RAM空间 3.设置好栈 4.跳转到第二阶段的代码入口 (2)第二阶段的功能 1.初始化本阶段所使用的硬件设备 ...
- GSAP 官方文档(结贴)
好久没写GSAP的教程的(其实我也不懂哈哈),国内也没什么人用,不对动画要求特别高的话,其实也没必要用GSAP,现在工作上没用到这个东西,也懒得写了,所以有问题的话去找一下greensock的官方文档 ...