标签:
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架构》,探讨如何理解这个概念。
表征状态转移大概图解:
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的具体网址。