一、restful规范

'''
它是一个规范,面向资源架构 十条规范
1.API与用户的通讯协议,总是使用HTTPs协议,确保了网络传输的安全性
2.域名
--https://api.example.com :尽量将API部署在专用域名(会存在跨域问题)
--https://example.org/api/ :这个写法简单,推荐使用
3.版本
--https://api.example.com/v1/ 把版本号放在请求头中
4.路径 在网络上任何东西都是资源,均使用名词表示(可复数)
--127.0.0.1/books/
5.method 通过请求方式来表示进行的操作
--127.0.0.1/books/ get请求:表示获取所有图书
--127.0.0.1/books/1 get请求:表示获取id为1的图书
--127.0.0.1/books/ post请求:表示新增一本书
--127.0.0.1/books/ delete请求:表示删除一本书
--127.0.0.1/books/ put/patch请求:表示修改一本书
6.过滤 通过在url上传参的形式传递搜索条件
7.状态码
1 开头: 服务器正在处理
2 开头: 服务器处理成功
3 开头: 重定向
4 开头: 客户端错误
5 开头: 服务器错误
--注意:再返回的数据中携带状态码
8.错误处理.应返回错误信息,error当做key
9.返回结果针对不同操作,返回数据格式不同
  --所有数据:列表
  --删除数据:返回一个空 {status:100,error:'删除成功!',data:''}
  --修改数据:{status:100,error:'修改成功!',data:{id:1,title:'西游记'}}
10.返回结果中提供链接

总结:必须说出来的就两条: 1.路径都用名词表示 2.请求方式不同,表示不同的操作
'''

二、CBV(View)源代码执行流程

'''
什么是闭包函数?
内部函数有对外部函数作用域的引用 getattr反射
handler是请求函数的内存地址
'''

路由层

#url是一个函数,第一个参数是正则表达式,第二个参数是函数的内存地址
url(r'^books/', views.Books.as_view()) #当程序启动的时候,url这个函数已经执行,第二个位置参数已经形成了一个函数的内存地址(as_view()返回值的是源代码中view这个函数的内存地址)
#比如来了一个get请求,拿到第二个位置参数内存地址加括号执行,其实就是view(request, *args, **kwargs),本质就是执行dispatch(request, *args, **kwargs)
#dispatch方法内部通过请求方式(get,post),反射出要执行的方法,去执行,然后返回(return handler(request, *args, **kwargs)) handler是请求函数的内存地址

业务逻辑层

from django.shortcuts import render,HttpResponse
from django.http import JsonResponse
from django.views import View class Books(View):
def get(self,request):
l1=[{'id':1,'title':'追风筝的人'},{'id':2,'title':'解忧杂货店'}]
#如果转列表一定要写safe=False,否则会报错 如果转字典不需要
return JsonResponse(l1,safe=False,json_dumps_params={'ensure_ascii':False})
def post(self,request):
return HttpResponse('ok')

三、drf框架安装和简单使用

'''
在Django中
urlencode编码
formdata编码
json编码:request.POST是没有值的,只能从body中取出,直接处理
-urlencode和formdata编码,request.POST可以提供值
'''
'''
drf框架
在原来django框架的基础上多做了一些事 安装:djangorestframework rest_framwork本质上是一个app,要使用它我们需要在settings中对其进行配置 只要用drf,以后写的都是cbv drf提供的:序列化组件 视图组件 解析器 认证组件 权限组件 频率组件 分页器 响应器 url控制器 版本控制
'''

路由层

url(r'^books/', views.Books.as_view())

业务逻辑层

from django.shortcuts import render,HttpResponse
from django.http import JsonResponse
from rest_framework.views import APIView
class Books(APIView):
def get(self,request):
l1=[{'id':1,'title':'追风筝的人'},{'id':2,'title':'解忧杂货店'}]
#如果转列表一定要写safe=False,否则会报错 如果转字典不需要
return JsonResponse(l1,safe=False,json_dumps_params={'ensure_ascii':False})
def post(self,request):
return HttpResponse('ok')

APIView的源码执行流程

'''
APIView继承的是View
比如①get请求来了,执行APIView中的as_view(),只要继承了APIView,都没有csrf校验了,源码中本质还是执行的View中的as_view方法内部的view闭包函数,view闭包函数中执行了dispatch方法
②先在业务逻辑层找有没有dispatch方法,没有直接到父类(APIView)中找,现在执行的不再是View中的dispatch方法,而是APIView的dispatch方法,返回一个request对象(这个request对象已经不是原生的request对象,但是内部包含了原生request对象),APIView中的dispatch方法中调用了initial方法,这个方法中包含了认证,权限以及频率组件
③dispatch方法内部通过请求方式(get,post),反射出要执行的方法,去执行 在rest_framwork中将原生request赋给了_request,在业务逻辑层request.GET仍可以使用,首先找自己request中有没有,如果没有,从self._request中找,就可以找到原生的request中的GET. 在drf框架中request.GET,request._request.GET以及request.query_params是一样的
request.data 这个data是post,put的内容都在里面
'''

一、restful规范 二、CBV(View)源代码执行流程 三、drf框架安装和简单使用的更多相关文章

  1. 《SpringMVC从入门到放肆》二、SpringMVC的执行流程及默认配置

    上一篇博文我们做了一个hello world的程序,并且已经成功的跑起来了.这一篇我们来深入的了解一下SpringMVC的执行流程以及一些其它的配置. 一.执行流程 来解释一下上图中的各个名词1.Di ...

  2. spark 源码分析之二十一 -- Task的执行流程

    引言 在上两篇文章 spark 源码分析之十九 -- DAG的生成和Stage的划分 和 spark 源码分析之二十 -- Stage的提交 中剖析了Spark的DAG的生成,Stage的划分以及St ...

  3. SpringMVC--从理解SpringMVC执行流程到SSM框架整合

    前言 SpringMVC框架是SSM框架中继Spring另一个重要的框架,那么什么是SpringMVC,如何用SpringMVC来整合SSM框架呢?下面让我们详细的了解一下. 注:在学习SpringM ...

  4. debian内核代码执行流程(三)

    接续<debian内核代码执行流程(二)>未完成部分 下面这行输出信息是启动udevd进程产生的输出信息: [ ]: starting version 175是udevd的版本号. 根据& ...

  5. Destoon二开必看执行流程

    <?php 代码首先包含common.inc.php文件 在common.inc.php文件中,首先定义常量. define('IN_DESTOON', true); define('IN_AD ...

  6. Golang(十二)TLS 相关知识(三)理解并模拟简单代理

    0. 前言 前面的介绍我们理解了数字签名等知识,同时学习了 OpenSSL 生成私钥和证书并验证 之前提过我们基于 BitTorrent 协议开发了一个 docker 镜像分发加速插件 中间涉及到了配 ...

  7. DRF框架(一)——restful接口规范、基于规范下使用原生django接口查询和增加、原生Django CBV请求生命周期源码分析、drf请求生命周期源码分析、请求模块request、渲染模块render

    DRF框架    全称:django-rest framework 知识点 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful规范下的CBV接口 3.请求组件 ...

  8. restful规范和drf模块

    restfu1规范 它是一个规范,面向资源架构 10条规范: 1.api与用户的通信协议,总是使用https协议 api网上提供的接口 2.域名: 尽量将api部署在专用域名(会存在跨域问题) API ...

  9. Springboot & Mybatis 构建restful 服务二

    Springboot & Mybatis 构建restful 服务二 1 前置条件 成功执行完Springboot & Mybatis 构建restful 服务一 2 restful ...

随机推荐

  1. 升级 Glide 4.0 版本相关配置

    http://blog.csdn.net/hexingen/article/details/72578066 http://blog.csdn.net/hexingen/article/details ...

  2. dll注入遇到CreateRemoteThread()返回错误代码5

    在进行dll注入的时候,发现触发了CreateRemoteThread()的错误并返回错误代码5,刚开始以为权限不够,用了管理员权限和加了SetPrivilege()函数提权和用NtCreateThr ...

  3. 13.vue组件

    vue组件(一) 组件嵌套: 1.全局嵌套: <!doctype html> <html> <head> <meta charset="utf-8& ...

  4. 微信小程序文字超出加省略号

    我查资料的时候搜到这个博客 http://blog.csdn.net/u010168409/article/details/54429678 view{ overflow:hidden; //超出一行 ...

  5. allegro画元件封装

    LP Wizard 10.5 根据标准,输入datasheet的尺寸,可以计算出推荐的焊盘和封装. 封装必须画的层: 1.引脚 2.pakage-> 2.1.assembly_top,add线( ...

  6. yum安装openjdk

    含有的命令:yum,java -version,javac,source,vim [root@ycj ~]# yum -y install java-1.8.0-openjdk-devel //安装j ...

  7. Docker入门1------概念和安装

    关于docker的介绍: https://www.cnblogs.com/neptunemoon/p/6512121.html docker入门教程:http://www.docker.org.cn/ ...

  8. Spring MVC原理及配置详解

    Spring MVC概述: Spring MVC是Spring提供的一个强大而灵活的web框架.借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单.这些控制 ...

  9. Open_stack 有虚拟机端口不通的问题

    原因:流量表 解决办法:not修改流量表(容易出错,出错后果更严重):is迁移虚拟机这样会对应生成新的流量表,然后问题就解决了.

  10. IIS支持apk文件

    随着智能手机的普及,越来越多的人使用手机上网,很多网站也应手机上网的需要推出了网站客户端,.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件 ...