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

时间:2021-08-03 19:27:19

标签:

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> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="{% url ‘login‘ %}" method="post"> {% csrf_token %} 用户名: <input type="text" name="username"> 密码: <input type="text" name="password"> <input type="submit"> </form> </body> </html>

  url.py内容如下

from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r‘^admin/‘, admin.site.urls), url(r‘^login/‘, views.LoginView.as_view(),name=‘login‘), ]

  views.py

from django.shortcuts import render,HttpResponse,redirect # Create your views here. from django.views import View class LoginView(View): def get(self,request): return render(request,‘login.html‘) def post(self,request): return HttpResponse(‘post‘)

  大家还记得CBV的这个视图函数,为什么get请求就能找到类的get方法,post请求就能找到post方法,其内部有个dispatch方法来进行分发,这又怎么玩呢,看源码啦,从哪里看呢?那里先执行,就从哪里看

  views.LoginView.as_view()这个东西是不是先执行啊,url接收到请求,调用了它对不对,as_view()类方法,这个类方法给你返回了一个叫view的方法,就是说这个url对应这个一个view方法,当用户访问login页面的时候是不是就是执行了view(request),大家进去看看源码吧。

  然后你就可以玩dispatch方法了,看代码:

from django.shortcuts import render,HttpResponse,redirect # Create your views here. from django.views import View class LoginView(View): def dispatch(self, request, *args, **kwargs): print(‘something...‘) res = super().dispatch(request, *args, **kwargs) #注意,不用传self,为什么呢,因为super已经帮你吧self放进去啦 print(‘someting....‘) return res def get(self,request): return render(request,‘login.html‘) def post(self,request): return HttpResponse(‘post‘)

  为什么要说它呢,因为后面咱们的drf学习,就要用它啦。

二 restful规范

  摘自:

什么是RESTFUl

    RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。

    REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”

    REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态

    所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是REST区别与其他架构风格的最本质属性

    对于REST这种面向资源的架构风格,有人提出一种全新的结构理念,即:面向资源架构(ROA:Resource Oriented Architecture)

      另外还有其他两种,简单了解。

RPC与SOA

    网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备......)。

    因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现"API First"的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。还有一篇《理解RESTful架构》,探讨如何理解这个概念。

    表征状态转移大概图解:

      

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

    

  2.RESTFUl API设计

    2.1 使用协议

      API与用户的通信协议,总是使用HTTPs协议。

    2.2 使用域名

      应该尽量将API部署在专用域名之下,意思就是给API专门做一个服务器。

https://api.example.com

      如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。

https://example.org/api/

    2.3 版本提示

      网站的API可能一直在更新,那么应该将API的版本号放入URL。

https://api.example.com/v1/

      另一种做法是,将版本号放在HTTP头信息中,但不如放入URL方便和直观。采用这种做法。

    2.4 路径写法   

      路径又称"终点"(endpoint),表示API的具体网址。