在开始rest framework之前,我们先来了解一下什么是restful

rest 是一种软件架构风格,Representational state Transfer

它从资源的角度去看整个网络,通过对网络中的每个节点进行URL标识,客户端应用通过URL来获取资源的表征

其本质是将一切数据都视为资源,这是有别于其他架构的最大区别,这个理念被称为:面向资源架构(ROA)

下面来看看restful api的设计规范(10条)

1 api与用户的通信协议使用https协议

2 域名

https://api.example.com     将api部署在域名之前,(需解决跨域问题),子域名的方式

https://example.com/api     写在域名之后作为路径使用,简洁,url的方式

3 版本

https://api.example.com/v1/   在域名后面加上版本名称

请求头                                   将需要的版本名称加入请求头里面

4 路径 ,可以将网络上的任何东西作为资源,使用其名词(可复数)

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

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

5 method 方法

GET: 从服务器上获取资源(一个或者多个)
POST:新建一个资源
PUT:更新资源(客户端提供改变后的完整资源)
PATCH:更新资源的部分功能(例如改变其属性)
DELETE:删除资源

6 过滤,通过在url上传参的形式传递搜索条件

https://api.example.com/v1/books?page=2&per_page=50
上面传递的参数也可以是limit,offset,order等

7 状态码

状态码        说明                        其他
ok GET 服务器成功返回用户请求的数据
moved permanently       被请求的资源已永久移动到新位置
Move Temporarily     请求的资源临时从不同的 URI响应请求
Bad Request 1语义有误,当前请求无法被服务器理解 请求参数有误。
403    Forbidden             服务器已经理解请求,但是拒绝执行它
404    Not Found             请求失败,请求所希望得到的资源未被在服务器上发现
405    Method Not Allowed        请求行中指定的请求方法不能被用于请求相应的资源
500    Internal Server Error       一般来说,这个问题都会在服务器端的源代码出现错误时出现。
502    Bad Gateway            作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503    Service Unavailable        由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复

8 错误处理,报错时返回信息,以error作为key

{error:"XXXXXXXXXXXXXXXXXXXXXXXXX"}

9 返回结果,根据不同的操作向用户返回不同类型的结果

GET  /collection: 返回资源对象的列表(数组)
GET /collection/1 返回单个资源对象
POST /collection 返回新生成的资源对象
PUT /collection/1 返回完整的资源对象
PATCH /collection/1 返回完整的资源对象
DELETE /collection/1 返回一个空文档

10 Hypermedia API,返回结果提供可以连向其他api的方法,让用户直接使用

[
  {
    id:1,
    name:'物理',
    url:'https://www.hehe.com/1',
  },
  {
    id:2,
    name:'化学',
    url:'https://www.hehe.com/2',
  }
]

其他:安装

pip install diangorestframework

rest framework 之前的更多相关文章

  1. windows类书的学习心得

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  2. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  3. Entity Framework Core 1.1 升级通告

    原文地址:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ 翻译:杨晓东 ...

  4. Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

    将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...

  5. 在传统.NET Framework 上运行ASP.NET Core项目

    新的项目我们想用ASP.NET Core来开发,但是苦于我们历史的遗产很多,比如<使用 JavaScriptService 在.NET Core 里实现DES加密算法>,我们要估计等到.N ...

  6. 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)

    前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...

  7. 来,给Entity Framework热热身

    先来看一下Entity Framework缓慢的初始化速度给我们更新程序带来的一种痛苦. 我们手动更新程序时通常的操作步骤如下: 1)把Web服务器从负载均衡中摘下来 2)更新程序 3)预热(发出一个 ...

  8. 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)

    前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...

  9. Entity Framework教程(第二版)

    源起 很多年前刚毕业那阵写过一篇关于Entity Framework的文章,没发首页却得到100+的推荐.可能是当时Entity Framework刚刚发布介绍EF的文章比较少.一晃这么多年过去了,E ...

  10. Entity Framework 6 Recipes 2nd Edition 译 -> 目录 -持续更新

    因为看了<Entity Framework 6 Recipes 2nd Edition>这本书前面8章的翻译,感谢china_fucan. 从第九章开始,我是边看边译的,没有通读,加之英语 ...

随机推荐

  1. 二、Redis启动、停止、Redis命令行的操作

    1.redis命令 redis执行了make install后,redis的课执行文件都会自动复制到 /usr/local/bin 目录 redis-server redis服务器 redis-cli ...

  2. linux IO模式以及select、poll、epoll详解

  3. 07.interrupt

    /** *isInterrupted */ public class InterruptDemo { public static void main(String[] args) throws Int ...

  4. typedef 复杂函数指针

    下面是三个变量的声明,我想使用typedef分别给它们定义一个别名,请问该如何做? >1:int *(*a[5])(int, char*); >2:void (*b[10]) (void ...

  5. Hands Off for Mac如何卸载?完全卸载Hands Off的方法

    Hands Off for Mac如何卸载?hands off是一款超好用的防火墙软件,在Mac系统上强大且易用,能够控制所有应用的网络连接和文件系统访问,保护我们的隐私数据和系统安全性,如果不需要了 ...

  6. restful规范面试总结

    1.url链接设计:采用https方式,有api关键字,有版本需要明确版本,请求链接用名词来表示资源,具体的操作方式采用请求方式来确定2.url响应数据设计:需要明确 状态码.错误信息.成功结果,子资 ...

  7. SPI驱动程序设计

    一.SPI驱动子系统架构 m25p80.c: static int __devinit m25p_probe(struct spi_device *spi) { struct flash_platfo ...

  8. vue 学习中遇到的一些问题

    Vue中data有return返回函数问题: 在简单的vue实例中会看到Vue实例中data属性展示方式如下: let app= newVue({ el:"#app", data: ...

  9. web服务器和后端语言的关系

    1.web服务nginx和php的相互关系  : https://www.cnblogs.com/luckylihuizhou/p/6387171.html 个人理解:web服务器本身没有处理后端语言 ...

  10. CentOS 6.9 安装配置zeromq、jzmq

    官方安装配置链接 安装zeromq 步骤一.准备C语言环境 yum -y install gcc-c++ 步骤二.解压缩zeromq tar -zxf zeromq-4.1.6.tar.gz 步骤三. ...