什么是REST

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

什么是资源?

网络上所有的文本、图片、视频等实体,都是资源。除了实体,还可以是抽象概念,比如某人的手机号、住址等。找到某个资源,需要URL,统一资源定位符。

URL和URI

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

RESTful规范

面向资源

每个URL代表一种资源,URL中尽量不要用动词,要用名词

根据请求方式不同,进行不同的操作

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
}
}

举例:

例如动物园中有很多的动物,如何进行增删改查?

  • 查找一个老虎: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.py

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主要功能和组件

Django REST Framework概述的更多相关文章

  1. 利用 Django REST framework 编写 RESTful API

    利用 Django REST framework 编写 RESTful API Updateat 2015/12/3: 增加 filter 最近在玩 Django,不得不说 rest_framewor ...

  2. Django Rest Framework源码剖析(三)-----频率控制

    一.简介 承接上篇文章Django Rest Framework源码剖析(二)-----权限,当服务的接口被频繁调用,导致资源紧张怎么办呢?当然或许有很多解决办法,比如:负载均衡.提高服务器配置.通过 ...

  3. Django REST Framework 学习笔记

    前言: 基于一些不错的RESTful开发组件,可以快速的开发出不错的RESTful API,但如果不了解开发规范的.健壮的RESTful API的基本面,即便优秀的RESTful开发组件摆在面前,也无 ...

  4. Django REST Framework(一) Serializer和ModelSerializer

    REST Framework概述 Django REST framework是一套基于Django的REST框架,是一个用于构建Web API的功能强大且灵活的工具包. 1.RESTful 简述Rep ...

  5. 使用django rest framework

    django 刚接触,想做一些restful api , google了一下,发现有现成的框架.Django REST framework. 对使用做下记录: 安装 从http://django-re ...

  6. SharePoint Framework 概述

    博客地址:http://blog.csdn.net/FoxDave 本文翻译自新出的SharePoint Framework概述介绍文章,原文地址:http://dev.office.com/sh ...

  7. django rest framework 入门

    django rest framework 入门1-序列化 Serialization 分类: Python 2013-01-22 22:24 11528人阅读 评论(0) 收藏 举报 djangop ...

  8. django rest framework

    Django-Rest-Framework 教程: 4. 验证和权限 作者: Desmond Chen, 发布日期: 2014-06-01, 修改日期: 2014-06-02 到目前为止, 我们的AP ...

  9. django rest framework csrf failed csrf token missing or incorrect

    django rest framework csrf failed csrf token missing or incorrect REST_FRAMEWORK = { 'DEFAULT_AUTHEN ...

随机推荐

  1. JS 内置对象 String对象

    JS内置对象   String对象:字符串对象,提供了对字符串进行操作的属性和方法.   Array对象:数组对象,提供了数组操作方面的属性和方法.   Date对象:日期时间对象,可以获取系统的日期 ...

  2. Postman提取返回值

    json响应结果 Postman是做接口测试的,但是很多接口并不是直接就能测试的,需要一些预处理.比如登录的时候,需要传递一个token.如果是网页测试,一般打开登录页面的时候就会自动生成一个toke ...

  3. import socket模块二

    ---恢复内容开始--- 优化两个小脚本实现不间断聊天: server.py: import socket sk = socket.socket() # 创建socket addess = ('127 ...

  4. 使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容

    原文:使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容 版权声明:本文为博主原创文章,未经博主允许不得转载.可点击关注博主 ,不明白的进群19106581 ...

  5. Bootstrap——可拖动模态框(Model)

    还是上一个小项目,o(╥﹏╥)o,要实现点击一个div或者button或者一个东西然后可以弹出一个浮在最上面的弹框.网上找了找,发现Bootstrap的Model弹出框可以实现该功能,因此学习了一下, ...

  6. Nginx 教程 2:性能

    为了获得更好的学习效果,我们建议你在本机安装 Nginx 并且尝试进行实践. tcp_nodelay, tcp_nopush 和 sendfile tcp_nodelay 在 TCP 发展早期,工程师 ...

  7. Eclipse Unable to install breakpoint in XXX 解决办法

    Debug 时偶尔会出现:Eclipse Unable to install breakpoint in XXX 情况一: 清除所有断点就行了,原因是断点打到注释上了. breakpoint 窗口: ...

  8. PCA降维的前世今生

    PCA降维的数学原理 PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分 ...

  9. 【笔记篇】Ubuntu一日游

    今天做数据的时候在Windows下出问题了(好像是爆栈了QAQ) 于是乎就打开了自己的Ubuntu虚拟机… 然而沉迷Windows的我已经忘记自己对这台虚拟机做过什么(比如装残了一个ycm自己都不知道 ...

  10. 试做Chrome插件——whatweb的chrome插件(从老博客转)

    引子 最近一个月每天早上在学Javascript,刚学完基础语法和一点点jQuery,今天忍不住写个Chrome玩玩看看自己对JavaScript的掌握怎么样了. 目标 考虑了一下,打算做个小东西,但 ...