restful规范与rest_framework

restful规范与rest_framework
django两种开发模式:

一、前后端不分离项目

二、前后端分离项目

什么是restful规范?

在前后端不分离的项目中,网页所需要的数据可以直接通过模板渲染的方式传递到前端页面,并且可以很好的支持django自带的各种验证工具,比如csrfmiddleware

但在前后端分离的项目中,前后端的数据通信普遍通过json字符串的形式通信,那么我们就需要有个标准去定义前后端沟通方式或者说格式

restful就是来干这件事情的,它是一种面向资源的架构,规定API如何编写,通过它我们可以让api更加简洁可维护,是对于我们写程序的一些规范

再次强调,restful规范只是一种规范,并不是强制性的,各公司可以结合自身需要去做适配和调整

它对于接口规范的影响深刻,绝大多数公司开发都沿用了这项规范,所以这往往也是面试官喜欢问的问题之一

restful规范10条:

  1、API与用户的通信协议,总是使用HTTPS协议--数据更安全

  2、域名有区分:

    -https://api.example.com
   -https://example.org/api/      

  3、版本:

    可以放在路径中

      -https://api.example.com/v1/zoos 这里的v1即是表示接口版本

    也可以放在请求头中

  4、通过method区分是什么操作

    -get 表示获取资源

    -post 表示新增

    -put/patch表示更新

    -delete表示删除

  5、路径、视网络上的所有东西都是资源,用名词表示

      -https://api.example.com/v1/zoos 这里的zoo即是名词,不再出现动词表示操作了

    例如获取id为1的书籍

      https://api.example.com/v1/books/1 # 这是用get请求表示请求资源,如果是delete请求即表示将这本书删除
  6、过滤,在路径上传参的形式传递搜索条件

      https://www.baidu.com/s?wd=python&rsv_spt=1
  7、返回状态码:

  8、正确错误与否都应返回相应信息

  {"status_code":100,"message":"登陆成功!"}
  {"status_code":101,"message":"登陆失败!密码错误!"}

  9、返回结果,针对不同的请求,服务器向用户返回结果

            #    -get获取所有资源/get获取一个资源
            请求    -127.0.0.1/api/vi/books  获取所有图书
            结果    {"status_code":100,'msg':'获取成功',data:[{},{}]}
            请求    -127.0.0.1/api/vi/books/3  获取id为3的图书
            结果    {"status_code":100,'msg':'获取成功',data:{name:xx,....}}
            #    -新增数据,把新增的数据再返回
            #    -修改了数据,返回完整的资源对象
            #    -删除数据,返回一个空文档            

  10、返回结果中提供链接

什么是rest_framework?

它是基于Django的一种服务框架,可以帮助我们快速开发符合RESTful规范的接口框架。

功能:

1.路由

2.视图

3.版本

4.认证

5.权限

6.频率

7.解析器

8.序列化

9.分页

10.渲染器

drf (django rest_framework):

APIView 的源码,Requset的源码
  -安装:

    -pip3 install djangorestframework
    -pycharm中安装

    -使用
  -第一步,再写视图,都写cbv


    from rest_framework.views import APIView
    class Books(APIView):
    pass

  -第二步,在setting中配置,rest_framework实质上是一个app,需要注册才可以使用

  INSTALLED_APPS= [
    。。。。。
    'rest_framework'
  ]

  -源码分析:
  视图类继承了APIView 之后:

    -1 所有的请求都没有csrf的认证了
    -2 在APIView中as_view本质还是调用了父类的as_view(View的as_view)
    -3 as_view中调用dispatch ----->>>这个dispatch是APIView的dispatch

  -APIVIew的dispatch方法:

    1 对原生request对象做了一层包装(面向对象的封装),以后再用的request对象都新的request对象
    -2 在APIView中self.initial(request, *args, **kwargs),里面有频率控制,权限控制和认证相关
    -3 根据请求方法执行咱们写的视图类中的相应方法

    --视图类中方法的request对象,已经变成了封装后的request
  -Request类:

    -1 原生的request是self._request
    -2 取以post形式提交的数据,从request.data中取(urlencoded,formdata,json格式)
    -3 query_params 就是原生request的GET的数据
    -4 上传的文件是从FILES中取
    -5 (重点)其他的属性,直接request.属性名(因为重写了__getattr__方法)

引自希希大队长,侵删

原文地址:https://www.cnblogs.com/luowenConnor/p/11708118.html

时间: 2024-10-08 16:49:36

restful规范与rest_framework的相关文章

Django框架 --CBV源码分析、restful规范、restframework框架

一.CBV源码分析 1.url层的使用CBV from app01 import views url(r'book/',views.Book.as_view()) 2.as_view方法 as_view是一个类方法,实际上是一个闭包函数(内层函数包含对外层作用域的使用) 请求来了以后,调用as_view方法,调用函数中的view方法,view方法是调用了dispatch方法 @classonlymethod def as_view(cls, **initkwargs): def view(req

001---CBV和restful规范

CBV 和 restful规范 知识点准备: django的view FBV:基于函数的视图 CBV:基于类的视图 urls.py from django.urls import path from app01.views import StudentsView urlpatterns = [ path('students/ ',StudentsView.as_view()), ] views.py from django.views import View from django.shortc

django中cbv源码和restful规范

1 django 请求声明周期 -先进入实现了wsgi协议的web服务器---->进入django--->中间件--->路由--->视图--->取模板,取数据,用数据渲染模板--->返回模板的字符串--->在浏览器上看到页面了 2 开发模式(前后端分离和前后端不分离) -前后端不分离项目 -前后端分离项目 前端和后端通过json格式数据交互 3 cbv 源码分析 -FBV和CBV -执行流程: -路由如果这么配置:url(r'^test/', views.Test

lement-ui、接口、restful规范、drf

element-ui 安装 cnpm i element-ui -S 配置main.js import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); 使用:官方API https://element.eleme.cn/#/zh-CN/component/installation <!--案例--> <el-row> <el-butto

DjangoRestFramework学习一之restful规范、APIview、解析器组件、Postman等

DjangoRestFramework学习一之restful规范.APIview.解析器组件.Postman等 本节目录 [TOC] 一 预备知识 预备知识:django的CBV和FBV CBV(class based view):多用,简单回顾一下 FBV(function based view): CBV模式的简单操作:来个登陆页面吧 login.html文件内容如下: <!DOCTYPE html> <html lang="en"> <head>

18.DjangoRestFramework学习一之restful规范、APIview、解析器组件、Postman等

一 预备知识 预备知识:django的CBV和FBV CBV(class based view):多用,简单回顾一下 FBV(function based view): CBV模式的简单操作:来个登陆页面吧 login.html文件内容如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</tit

Django restful 规范

一.REST Frame Work REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为"表征状态转移" REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态 REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为&qu

第一章 restframework——restful规范

第一章 restframework--restful规范 什么是restful(what): REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为"表征状态转移" REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态 REST与技术无关,代表的是一种软件架构风格,REST是Representation

RESTful规范和DRF

RESTful规范 REST风格 资源 网页中能看到的都是资源 URI 统一资源标识符 URL 统一资源定位符 统一资源接口 对资源的操作根据HTTP请求方式的不同来进行不同的操作 遵循HTTP请求方式的语义 前后端传输的是资源的表述 展现的是资源的状态 凡是遵循REST风格实现的前后端交互都叫RESTful架构 核心思想 面向资源去编程, url中尽量用名词不要用动词 根据HTTP请求方式的不同对资源进行不同的操作 在url中体现的 体现版本 https://v3.bootcss.com/ h