早期的url设计是毫无章法的,每一个人的思惟方式不同、命名方式不同而致使的url很是的乱,不方便项目的后期维护和扩展。python
好比这样的url:git
以上这些状况的出现,致使了不少的问题,让互联网的世界变得杂乱不堪,日益复杂且臃肿。所以http协议创始人告诉人们正在错误的使用http协议,除了警告,他发表了一篇博客,大概意思就是教你们如何正确使用http协议,如何正肯定义url,这就是REST(Representational State Transfer),总结来,一句话:github
能够看到,url很是简洁优雅,不包含任何操做,不包含任何动词,简简单单,用来描述服务器中的资源而已,服务器根据用户的请求方式对资源进行各类操做。而对数据的操做,最多见的就是CRUD(建立,读取,更新,删除),经过不一样的请求方式,就足够描述这些操做方式了。若是不够用,Http还有其余的请求方式呢!好比:PATCH,OPTIONS,HEAD, TRACE, CONNECT。django
{ "error": "Invalid API key" } # 经过一个字典,返回错误信息。 # 这就是REST,上图中的url就是根据REST规范进行设计的RESTful api
话很少说,看图,图看明白就能够了json
注:咱们在剖析看源码的时候,必定要清楚self是谁,知道self是谁,基本咱们看源码思路就很是清晰了api
from django.shortcuts import HttpResponse import json from .models import Courses # 引入APIView from rest_framework.views import APIView # Create your views here. class CoursesView(APIView): # 继承APIView而不是原来的View def get(self, request): courses = list() for item in Courses.objects.all(): course = { "title": item.title, "description": item.description } courses.append(course) return HttpResponse(json.dumps(courses, ensure_ascii=False))
能够看出,改组件是经过重写dispatch()方法或as_view()方法来实现其功能的服务器