在开始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. 1.MVC的初步了解

    1.MVC简单介绍 1)原理(如图)如果想更加深入了解原理,可以访问此地址(https://www.cnblogs.com/uicodeintoworld/p/8950877.html) 理解:客户端 ...

  2. jQuery的ajaxFileUpload上传文件插件刷新一次才能再次调用触发change

    jQuery的ajaxFileUpload插件 关于用ajaxfileupload时,遇到一个要刷新一次页面才能再次上传,用live()方法来绑定 file表单 的change事件就能够解决,直接$( ...

  3. TCP三次握手过程和四次释放

    TCP是面向连接的协议 客户端发送 SYN包,和随机数SEQ.此时客户端是SYN_SENT状态. 服务器返回SYN+ACK,和随机数SEQ, rwnd是告诉客户端我可以接收多少字节.此时服务器端是SY ...

  4. JavaSE---main方法解读

    1.概述 1.1 java程序入口:main方法 public static void main(String[] args){} a,public:java类由JVM调用,为了让JVM自由调用mai ...

  5. 这样才能正确解锁MaxCompute客户端

    大数据计算服务(MaxCompute,原名ODPS)是一种快速.完全托管的TB/PB级数据仓库解决方案.MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决 ...

  6. Ceph中PG和PGP的区别

    http://www.zphj1987.com/2016/10/19/Ceph%E4%B8%ADPG%E5%92%8CPGP%E7%9A%84%E5%8C%BA%E5%88%AB/ 一.前言 首先来一 ...

  7. linux IPC socket(3)server简单写法

    写server的一些流程总结 一.向内核申请一个socket TCP形式 sock_fd = socket(AF_INET, SOCK_STREAM, ); UDP形式 sfd = socket(AF ...

  8. paper 145:caffe-深度学习框架的搭建

    参考来源于:http://www.cnblogs.com/goodluckcwl/p/5686094.html  (部分内容做了修改) Caffe是一个深度学习框架,本文讲阐述如何在linux下安装G ...

  9. win7 SP1 原版 32位 百度网盘下载

    下载地址:https://pan.baidu.com/s/1o6I410XduG1kcmn9vQ3miw 提取码:15vm 扫码下载:

  10. 改进持续交付中的CI环节

    改进持续交付中的CI环节 在当前 DevOps 的趋势下,持续集成(CI)和持续部署(CD)具有支柱性地位,那么能够成功搭建 CI/CD 流水线就至关重要了. 今天我就讲一讲如何做好CI部分,让我们的 ...