对django rest_framework的个人理解
首先要搞清楚web service 和rest都是一种API设计的架构,简单点说
作为一个api开发者,为了保证跨语言、跨平台的高效api,我们可以采用架构师提出的设计架构的理念去设计符合条件的api.
比方说web service是以service为重点,就好比把公司内部系统的业务方法发布成WebService服务,供远程合作单位和个人调用,也就是封装成可调用的api。web service是由WSDL+UDDI+SOAP,这三个重要的概念组成,wsdl就是公司将自己能够提供的服务用xml的形式表示出来,就像在公司外面贴了一张告示一样,告诉大家我们公司可以提供什么样的服务,UDDI就是将自己的WSDL文件暴露出来,让大家都知道的一种方式,也就是企业在UDDI服务器上注册WSDL可以供用户自己无查找本公司的服务,或者直接给出URI,定位到WSDL文件,消费者怎么使用web service,以怎么样的形式去使用,就是soap的概念了。
所以,web service就是比如像天气预报、淘宝网等把自己的系统服务以web service的形式暴露出来,不论你使用的是哪一个操作系统,如果想要调用他的服务,只要遵循web service的设计规则,就可以成功使用它们的服务
rest是一种api的设计架构,如果想要自己设计的api,能够满足不同的平台的需要,可以使用REST的规则来进行设计。API就是前后端进行交流的一个入口,而 rest风格的API使交互的时候更加规范,更加容易。REST的重点是resource,也就是资源。restful的设计核心就是服务器上所有的东西都是资源。所有的HTTP action都应该是相应的resource上可以被处理的。API就是对资源的管理操作,具体的操作是由http action定的。
上面的意思就是说,restful的设计中心就是服务器上的资源,API就是对资源进行操作的程序,而具体怎么操作这些资源,是增加、修改,还是删除是由http action决定的。在一个RESTful系统里,客户端向服务端发起索取资源的操作只能通过HTTP协议语义来进行交互。这5个协议是:
GET:从服务器取出资源(一项或者多项)
POST:在服务器新建一个资源
PUT:在服务器更新资源(客户端提供完整资源数据)
DELETE:从服务器删除资源
HEAD:从服务器获取报头信息(不是资源)
在客户端与服务器端进行交互时,又规定了相应的交互格式,其中最常用的是以application开头的。
application/json JSON数据格式
application/xhtml+xml XHTML格式
application/xml XML数据格式
application/atom+xml XML聚合格式
通俗点解释,就是说,客户端和服务端是不能直接交互数据,在这里是要使用API的,就好比警察和卧底,他们是不能直接交流的,需要通过某种暗号,比方说敲三下门,这里的敲三下门就是HTTP协议,交流的时候也不能直接交流需要一种交流语言,比方说英语,俄语之类的,这就是上面刚说的交互格式。
在一个RESTful系统里,客户端向服务端发起索取资源的操作只能通过HTTP协议语义来进行交互,客户端与服务端进行交互响应时,需要规定双方能够接受何种类型的媒体表现形式,也就是说,API设计的时候,只有遵循http协议前后端才能进行交互,也只有使用合理的资源类型,才能让客户端获取到交互数据。
API的设计规则:
应该尽量将API部署在专用域名之下,URL中应尽量使用名词,尽量避免使用动词
路径又称"终点"(endpoint),表示API的具体网址
找到特定领域的媒体类型,根据特定的领域来设计媒体类型
易拓展性
灵活性
可移植性
上面的都是索引,只为引出最终的rest_framework,就是rest风格的框架,能够实现被重复利用的api,满足前后端数据的交互
对django rest_framework的个人理解的更多相关文章
- 详解Django rest_framework实现RESTful API
这篇文章主要介绍了详解Django rest_framework实现RESTful API,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 一.什么是REST 面向资源是R ...
- Django rest_framework 实用技巧
前言: 最近工作中需要用到Django rest_framework框架做API, 边学边写,记录了一些实际工作中需要用到的功能,不是很全也不系统,以后需要什么功能可以在这查询. 后续还会更新其它的用 ...
- Python之Django rest_Framework框架源码分析
#!/usr/bin/env python # -*- coding:utf-8 -*- from rest_framework.views import APIView from rest_fram ...
- Python之Django rest_Framework(2)
实例化: v1 = ["view.xxx.path.Role","view.xxx.path.Group",] 可以循环,循环出来的每一个不能实例化 如果把v1 ...
- 七、django rest_framework源码之视图
1 绪言 当大家看大这篇博文的时候,应该对Django rest_framework中的CBV有所了解了,大致来说就是通过定义类来继承APIView类,并在类中定义get.post.put.delet ...
- 五、django rest_framework源码之版本控制剖析
1 绪论 Djangorest_framework的版本控制允许用户更改不同客户端之间的行为,且提供了许多不同的版本控制方案.版本控制由传入的客户端请求确定,可以基于请求URL,也可以基于请求标头. ...
- 四、django rest_framework源码之频率控制剖析
1 绪言 权限判定之后的下一个环节是访问频率控制,本篇我们分析访问频率控制部分源码. 2 源码分析 访问频率控制在dispatch方法中的initial方法调用check_throttles方法开始. ...
- 二、django rest_framework源码之认证流程剖析
1 绪言 上一篇中讲了django rest_framework总体流程,整个流程中最关键的一步就是执行dispatch方法.在dispatch方法中,在调用了一个initial方法,所有的认证.权限 ...
- django rest_framework中将json输出字符强制为utf-8编码
最近在和日本外包合作开发JIRA对接发布系统的版本单时, 遇到这个问题. 就是我们这边的输出浏览器显示为中文,而到了JIRA端就出现乱码. 查了文档,原来django rest_framework的默 ...
随机推荐
- Kattis - sortofsorting 【排序】
题意 给出一系列字符串,然后要排序 排序规则 只按前两位按字典序来排序,如果前两位完全一样,则按输入的顺序来排 思路 要用 冒泡排序 不能用STL里面的 SORT 因为它不稳定 AC代码 #inclu ...
- c# 抽象类(abstract)
using System; using System.Collections.Generic; using System.Linq; using System.Text; //抽象类(abstract ...
- pdo封装2
<?php //添加了一个 _createSql 方法,负责创建所有sql class Db{ static private $ins; private $pdo; private $table ...
- Python编程-异常处理
一.错误和异常 1.程序中难免出现错误,而错误分成两种 (1)语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def t ...
- python爬虫之html解析Beautifulsoup和Xpath
Beautiifulsoup Beautiful Soup 是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据.BeautifulSoup 用来解析 HTML 比较简 ...
- Pandas标记删除重复记录
Pandas提供了duplicated.Index.duplicated.drop_duplicates函数来标记及删除重复记录 duplicated函数用于标记Series中的值.DataFrame ...
- MVC6 OWin Microsoft Identity 自定义验证
1. Startup.cs中修改默认的验证设置 //app.UseIdentity(); app.UseCookieAuthentication(options => { //options.A ...
- 一键安装 lnmp/lamp/lanmp
1.使用putty或类似的SSH工具登陆VPS或服务器 # screen -S lnmp 如果提示screen: command not found 命令不存在可以执行:yum install scr ...
- SSM mapper.xml
MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 ...
- URL重写技术总结
URL重写技术总结 概要:什么是url重写? URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程.比如浏览器发来请求 hostname/101.html ,服务器自动将这个请 ...