Django的前后端分离

基本概念

FBV

基于函数的视图函数

缺点:

判断请求方式;

序列化难度较大;

data={
   
    'user':user
}

CBV

基于类的视图函数

不需要判断请求方式自动执行

缺点:

序列化难度大

DRF

django rest framework

专门来解决序列化的问题

FBV+DRF

基于函数的视图函数

缺点:

判断请求方式;

序列化难度较大;

django rest framework

专门来解决序列化的问题

CBV+DRF

基于类的视图函数

不需要判断请求方式自动执行

缺点:

序列化难度大

django rest framework

专门来解决序列化的问题

RESTful API

什么是REST

一种软件架构风格、设计风格、而不是标准,只是提供了一组设计原则和约束条件。它主要用户客户端和服务器交互类的软件。

基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存机制等。
REST全称是Representational State Transfer, 表征性状态转移。

给你接口

127.0.0.1:8000/user/add/    post
127.0.0.1:8000/user/delete/    delete   
127.0.0.1:8000/user/update/    put 
127.0.0.1:8000/user/find/    get

根据请求方式的不同执行不同的业务逻辑

127.0.0.1:8000/user/

表征性状态转移REST(representiontational state transfer)

根据不同的请求方式,进行表征性状态转移

表征性状态转移

本来都在接口上,现在放到视图函数里面了

def user(request):
    if request.method == 'GET':
        user.objects.filter
    if request.method == 'POST':
        user.save
    if request.method == 'delete':
        user.delete
    if request.method == 'put':
        user.save

REST(表征性状态转移)的出现

首次在2000年Roy Thomas Fielding的博士论文中出现,Fielding是一个
非常重要的人,他是HTTP协议(1.0版和1.1版)的主要设计者,Apache服务器软件的作者之一 ,Apache基金会的第一任主席。所以,他的这篇论文一经发表,就引起了广泛的关注。

论文

本文研究计算机科学两大前沿—软件和网络—的交叉点。长期以来,软件研究主要关注软件设计的分类、设计方法的演化,很少客观地评估不同的设计选择对系统行为的影响。而相反地,网络研究主要关注系统之间通信行为的细节、如何改进特定通信机制的表现,常常忽视了一个事实,那就是改变应用程序的互动风格比改变互动协议,对整体表现有更大的影响。我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。

REST爆发

其实在REST架构推出的十几年间,它并没有一路高歌的发展,真正的大范围推广是在2013年之后,伴随着移动端的飞速发展,越来越多人的开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件采用"客户端/服务器"模式,也就是我们常说的C/S模式,这一切建立在分布式体系上,通过互联网通信,具有高延时,高并发等特点。网站开发,完全采用软件开发开发的模式。但传统上,软件和网络是两个不同的领域,很少有交集,软件开发主要针对单机环境,网络则主要研究系统之间的通信。我们需要考虑的是如何开发在互联网环境中使用软件。

理解RESTful

要理解RESTful架构,最好的就是去理解它的单词Representational State Transfer到底是什么意思,它的每一个词到底要表达什么。 REST的释义,“表现层状态转化”,其实这省略了主语。 “表现层”其实指的是 “资源(Resource)"的“表现层” 。

资源(resource)

所谓"资源”,就是网络上的一一个实体,或者说是网络上的一个具体信息。它可以是一段文本,一-张图片,-首歌曲,- -种服务,总之就是-个具体的实例你可以使用一-个URI (统-资源定位符)指向它,每种资源对应一个特定的URI要获取这个资源,访问它的URI就可以了,因此URI就成了每一个资源的地址或独一无二的识别符。所谓"上网”就是与互联网上一-系列的“资源”互动调用它们的URI。

表现层(reprensentational)