前言
Django REST framework is a powerful and flexible toolkit for building Web APIs.
本文由浅入深的引入Django REST framework (以后简称DRF)并剖析源码流程,让看官们对DRF有更深的认识,在使用的时候更得心应手。
如有错误,不吝赐教 帮忙指正,水平有限,本文示例代码请核对后使用。
前后端分离
什么是前后端分离以及前后端分离的应用场景?
我实在不知道怎么描述,下面给一个我自己的片面理解:
RESTAPI + iOS + Android + Web
以RESTAPI+ Web为例,其架构示意图如下:
一体式结构示意图:
前后端分离式Web架构示意图:
谁来主导 ?
前后端分离以后,前端可以根据用户不同时期的体验需求迅速改版,后端对此毫无压力。同理,后端进行的业务逻辑升级,数据持久方案变更,只要不影响到接口,前端可以毫不知情。
当然如果需求变更引起接口变化的时候,前后端又需要坐在一起同步信息了。
前后分离不仅带来好处,也带来矛盾,毕竟后端思维和前端思维还是有所不同——前端思维倾向于用户体验,而后端思维则更倾向于业务的技术实现。
除此之外,前后分离在安全性上的要求也略有不同。由于前后分离本质上是一种 SOA 架构,所以在授权上也需要按 SOA 架构的方式来思考。
Cookie/Session 的方式虽然可用,但并不是特别合适,相对来说,基于 Token 的认证则更适合一些。
采用基于 Token 的认证就意味着后端的认证部分需要重写……后端当然不想重写,于是会将皮球踢给前端来让前端想办法实现基于 Cookie/Session 的认证……于是前端开始报怨(悲剧)……
因此系统一个良好的流程规范,RESTfull 应运而生。