在开始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. linux-ftp install

    ftp安装 yum install vsftpd vi /etc/vsftpd/vsftpd.conf (可以先备份,但不要放在此目录下,不然启动vsftpd的时候 也会加载其备份文件,报启动错误,因 ...

  2. ORACLE 11G新特性之一(增加带default的字段)

    在11g之前,增加带default值的字段,实现原理如下: alter table t1 add c1 varchar2(20) default 'XX' not null; 假设t1表有4千万行数据 ...

  3. 【leetcode】908. Smallest Range I

    题目如下: 解题思路:简单的不能再简单的题目了,对于任意一个A[i]来说,其可能的最小的最大值是A[i]-K,最大的最小值是A[i]+K.遍历数组,求出所有元素中最大的最小值和最小的最大值,两者之差( ...

  4. PHP clearstatcache() 函数

    定义和用法 clearstatcache() 函数清除文件状态缓存. PHP 会缓存某些函数的返回信息,以便提供更高的性能.但是有时候,比如在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被 ...

  5. Android中的ImageView的getDrawableCache获取背景图片的时候注意的问题

    获取ImageView的背景图片使用getDrawableCache方法,不要使用getDrawable方法,后者获取不到图片的. 1.在调用imageView.getDrawableCache()之 ...

  6. 网站运行一段时间后就无法访问,重启Tomcat才能恢复

    网站运行一段时间后就无法访问,重启Tomcat才能恢复出现这种情况,很可能是以下几种情况:1.超过数据库连接池上限2.并发数达到上限3.内存溢出具体还是需要通过打印的日志进行具体分析.解决方法1.如果 ...

  7. Oracle10gr2 开机自启动脚本

    目录 目录 软件环境 Oracle服务启动停止重启脚本 软件环境 操作系统 RHEL6.1 软件 Oracle10gr2 Oracle服务启动.停止.重启脚本 su - oracle cd /u01/ ...

  8. z-index只能用在定位元素上

    弄了很久才突然想到z-index只能用在被定位的元素上. 定位的时候要注意给父级定位 在ie7里有问题的部分

  9. .net报错大全

    1.未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0"[已解决] 解决方案:https://blog.csdn.net/mzl87/article/de ...

  10. flex属性flex-grow、flex-shrink、flex-basis

    tip: 1)这些属性写在子元素中,作用于子元素(父元素中应设置display:flex) 2)作用是子元素如何分配父元素的空间 3) flex-grow 是扩展比率,当子元素宽度总和小于父元素宽度时 ...