ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

restful规范,cbv源码执行流程,drf之APIView及Respons源码分析

2019-03-25 17:37:34  阅读:288  来源: 互联网

标签:127.0 请求 get 0.1 books APIView 源码 cbv view


一:restful规范

  restful是一个规范,面向资源架构,总共有十条规范:

  1:API与用户的通信协议,总是使用HTTPS协议

  2:域名

    https://api.example.com     尽量将API不熟在专用域名(会存在跨域问题,不推荐使用)

    https://example.org/api/     API很简单(推荐)

  3:版本

    https://api.example.com/v1/     把版本号放在请求头中

  4:路径,将网络上任何东西都看作资源,都使用名词表示(可复数)

    127.0.0.1/get_all_book/   旧版本

    127.0.0.1/books/     (可用名词,也可以用复数)

  5:method,通过请求方式来表示进行的操作(get请求,post请求,delete请求,put、patch请求)

    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:返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范

   

  10:返回结果中提供链接

二:cbv执行流程(class base view)

  路由写成:url(r'books/',views.Book.as_view())

   当程序启动,第二个位置其实已经放了一个函数的内存地址了(as_view内部view这个函数)

   比如来了一个get请求,拿到第二个位置参数内存地址加括号执行(request,*args,**kwargs),其实就是view(request,*args,**kwargs)

   dispatch方法内部通过请求方式(get,post),反射出要执行的方法,去执行,然后返回

 三:drf框架安装和简单使用(Djangorestframework)(其实就是一个app)

  只要用drf,以后写的都是cbv。(就是在原来Django框架的基础上多做了一些事)

  安装方法:方式一:pip3 install djangorestframework

       方式二:pycharm图形化界面安装

       方式三:pycharm命令行下安装(装在当前工程所用的解释器下)

   drf提供的:序列化组件、视图组件、解析器、认证组件、权限组件、频率组件、分页器、响应器、url控制器、版本控制

 四:APIView的源码执行流程

    -比如get请求来了,执行View的as_view方法内部的view闭包函数,view闭包函数中执行了dispatch方法,

   -现在再执行dispatch,就已经不是View的dispatch,是APIView的dispatch方法了

 

标签:127.0,请求,get,0.1,books,APIView,源码,cbv,view
来源: https://www.cnblogs.com/liuxiaolu/p/10595075.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有