rest framework 之前
在开始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 之前的更多相关文章
- windows类书的学习心得
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- Entity Framework Core 1.1 升级通告
原文地址:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ 翻译:杨晓东 ...
- Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...
- 在传统.NET Framework 上运行ASP.NET Core项目
新的项目我们想用ASP.NET Core来开发,但是苦于我们历史的遗产很多,比如<使用 JavaScriptService 在.NET Core 里实现DES加密算法>,我们要估计等到.N ...
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...
- 来,给Entity Framework热热身
先来看一下Entity Framework缓慢的初始化速度给我们更新程序带来的一种痛苦. 我们手动更新程序时通常的操作步骤如下: 1)把Web服务器从负载均衡中摘下来 2)更新程序 3)预热(发出一个 ...
- 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- Entity Framework教程(第二版)
源起 很多年前刚毕业那阵写过一篇关于Entity Framework的文章,没发首页却得到100+的推荐.可能是当时Entity Framework刚刚发布介绍EF的文章比较少.一晃这么多年过去了,E ...
- Entity Framework 6 Recipes 2nd Edition 译 -> 目录 -持续更新
因为看了<Entity Framework 6 Recipes 2nd Edition>这本书前面8章的翻译,感谢china_fucan. 从第九章开始,我是边看边译的,没有通读,加之英语 ...
随机推荐
- Java集合类框架的最佳实践有哪些
根据应用的需要正确选择要使用的集合的类型对性能非常重要,比如:元素的大小是固定的,而且能事先知道,我们就应该用Array而不是ArrayList. 有些集合类允许指定初始容量.因此,如果我们能估计出存 ...
- jquery实现左侧菜单 效果
html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...
- 属性.native用于解决第三方el组件库@click事件无效
描述 有时发现用一些第三方的组件库时,例如一个封装好的button按钮<el-butten>,绑定点击事件却没有任何作用,这时便需要加 .native 原因: v-on 是对 Vue 的事 ...
- MySQL图形化管理工具之Navicat安装以及激活
软件以及激活包下载地址 1. 安装navicat 双击navicat_trial_11.1.20.0.1449226634.exe,一路下一步安装(记住安装目录) 2. 激活 双击PatchNavic ...
- doT模板引擎
doT模板引擎是一个比较高效的引擎,一直都在使用,只有3kb大小,简洁的语法,无任何依赖,简单易用:下面的代码直接拷贝引用就可以使用: 插件代码 (function(){function p(b,a, ...
- (转)Maven创建webapp项目无法修改web版本的问题
maven创建的web app,默认使用的servlet版本是2.3,默认不支持JSTL,为了默认支持JSTL表达式,需要升级servlet到3.0 转:http://blog.sina.com.cn ...
- Hive 时间操作函数(转)
1.日期函数UNIX时间戳转日期函数: from_unixtime 语法: from_unixtime(bigint unixtime[, string format]) 返回值: string ...
- Polysh实现多服务器批量执行shell
安装 wget wget http://guichaz.free.fr/polysh/files/polysh-0.4.tar.gz tar -zxvf polysh-0.4.tar.gz cd po ...
- ES6数组中删除指定元素
知识点: ES6从数组中删除指定元素 findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引.否则返回-1. arr.splice(arr.findIndex(item => ...
- PAT_A1097#Deduplication on a Linked List
Source: PAT A1097 Deduplication on a Linked List (25 分) Description: Given a singly linked list L wi ...