Django REST Framework概述

什么是REST

REST与技术无关,表明的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”。这里说的表征性,就是指资源,一般咱们称为资源状态转移。javascript

什么是资源?

网络上全部的文本、图片、视频等实体,都是资源。除了实体,还能够是抽象概念,好比某人的手机号、住址等。找到某个资源,须要URL,统一资源定位符。html

URL和URI

URI是统一资源标志符。URL用来描述地址,URI用来对资源进行标识。URL是URI的一个子集,经过定位的方式实现URIjava

RESTful规范

面向资源

每一个URL表明一种资源,URL中尽可能不要用动词,要用名词python

根据请求方式不一样,进行不一样的操做

GET:     从服务器取出资源
POST:   在服务器新建一个资源
PUT:     在服务器更新资源(客户端提供改变后的完整资源)
PATCH: 在服务器更新资源(客户端提供改变的属性)
DELETE:从服务器删除资源

在URL中体现版本

https://www.cnblogs.com/v1/myclass

在URL中体现是不是API

https://www.cnblogs.com/api/vi/myclass

尽可能使用HTTPS

https://www.cnblogs.com/api/vi/myclass

响应返回规范

{
    code: 1000, // 响应码
    msg: "ok",  // 描述信息
    data:{  // 数据
        id:1,
        name:'小强',
        depart_id:http://www.luffycity.com/api/v1/depart/8
    }
}

举例:django

例如动物园中有不少的动物,如何进行增删改查?api

  • 查找一个老虎:https://www.zoo.com/api/v1/animal?class=tiger&id=1 GET
  • 查找全部老虎:https://www.zoo.com/api/v1/animal?class=tiger         GET
  • 增长一个老虎:https://www.zoo.com/api/vi/animal      POST
  • 删除一个老虎:https://www.zoo.com/api/vi/animal         DELETE
  • 修改一个老虎的某个属性:https://www.zoo.com/api/vi/animal PATCH
  • 修改一个老虎的全部属性:https://www.zoo.com/api/vi/animal PUT

咱们能够看到URL中所有都是名词,对资源的操做(动做)体如今请求方式上,体现了面向资源的思想。服务器

Django REST Framework

是基于Django的RESTful实现网络

下载架构

pip3 install djangorestframework

settings.pypost

INSTALLED_APPS = [
    ...
    'rest_framework',
]

urls.py

from DemoApp.views import BookView
urlpatterns = [
    path('list', BookView.as_view()),
]

views.py

from rest_framework.views import APIView
from rest_framework.response import Response
 
class BookView(APIView):
    def get(self, request, *args, **kwargs):
        return Response('GET请求,响应内容')
   
    def post(self, request, *args, **kwargs):
        return Response('POST请求,响应内容')
   
    def put(self, request, *args, **kwargs):
        return Response('PUT请求,响应内容')

DRF主要功能和组件