首先要搞清楚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的个人理解的更多相关文章

  1. 详解Django rest_framework实现RESTful API

    这篇文章主要介绍了详解Django rest_framework实现RESTful API,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 一.什么是REST 面向资源是R ...

  2. Django rest_framework 实用技巧

    前言: 最近工作中需要用到Django rest_framework框架做API, 边学边写,记录了一些实际工作中需要用到的功能,不是很全也不系统,以后需要什么功能可以在这查询. 后续还会更新其它的用 ...

  3. Python之Django rest_Framework框架源码分析

    #!/usr/bin/env python # -*- coding:utf-8 -*- from rest_framework.views import APIView from rest_fram ...

  4. Python之Django rest_Framework(2)

    实例化: v1 = ["view.xxx.path.Role","view.xxx.path.Group",] 可以循环,循环出来的每一个不能实例化 如果把v1 ...

  5. 七、django rest_framework源码之视图

    1 绪言 当大家看大这篇博文的时候,应该对Django rest_framework中的CBV有所了解了,大致来说就是通过定义类来继承APIView类,并在类中定义get.post.put.delet ...

  6. 五、django rest_framework源码之版本控制剖析

    1 绪论 Djangorest_framework的版本控制允许用户更改不同客户端之间的行为,且提供了许多不同的版本控制方案.版本控制由传入的客户端请求确定,可以基于请求URL,也可以基于请求标头. ...

  7. 四、django rest_framework源码之频率控制剖析

    1 绪言 权限判定之后的下一个环节是访问频率控制,本篇我们分析访问频率控制部分源码. 2 源码分析 访问频率控制在dispatch方法中的initial方法调用check_throttles方法开始. ...

  8. 二、django rest_framework源码之认证流程剖析

    1 绪言 上一篇中讲了django rest_framework总体流程,整个流程中最关键的一步就是执行dispatch方法.在dispatch方法中,在调用了一个initial方法,所有的认证.权限 ...

  9. django rest_framework中将json输出字符强制为utf-8编码

    最近在和日本外包合作开发JIRA对接发布系统的版本单时, 遇到这个问题. 就是我们这边的输出浏览器显示为中文,而到了JIRA端就出现乱码. 查了文档,原来django rest_framework的默 ...

随机推荐

  1. VoLTE的前世今生...说清楚VoIP、VoLTE、CSFB、VoWiFi、SIP、IMS那些事...

    转:https://mp.weixin.qq.com/s?__biz=MzA3MTA3OTIwMw==&mid=401344844&idx=1&sn=497b351f524af ...

  2. Docker容器技术-优化Docker镜像

    一.优化Docker镜像 1.降低部署时间 一个大的Docker应用是如何影响在新Docker宿主机上的部署时间. (1)编写Dockerfile创建一个大Docker镜像 [root@bogon ~ ...

  3. 一、安装虚拟机,配置ip地址

    一.安装linux 注意点: 一.选择最小化安装的时候,要自定义安装软件,必须要安装下面的 如果没有安装上面的,需要用下面的命令来查询安装 如果没有安装就会出现各种问题 二.分区简单介绍 1.至少要一 ...

  4. 数据库系统概论学习4-SQL 语句和关系代数(二)单表查询

    4.12 字符匹配 精确查询和模糊查询 在这一节之前,我们学习的查询几乎都是精确查询,这就需要我们明确地知道某些属性的具体值.例如我们需要查询 'Wangxiaoxiao' 同学的信息,就需要在WHE ...

  5. Python的装饰器实例用法小结

    这篇文章主要介绍了Python装饰器用法,结合实例形式总结分析了Python常用装饰器的概念.功能.使用方法及相关注意事项 一.装饰器是什么 python的装饰器本质上是一个Python函数,它可以让 ...

  6. TypeScript手册1 - 基本类型和接口

    基本类型 像基本的JavaScript一样,TypeScript支持numbers, strings, structures, boolean等基本类型,而扩展的enum等类型,为编程提供了更多帮助. ...

  7. Linux 内核是如何构建

    https://github.com/MintCN/linux-insides-zh 介绍 我不会告诉你怎么在自己的电脑上去构建.安装一个定制化的 Linux 内核,这样的资料太多了,它们会对你有帮助 ...

  8. XML 的解析方法

    四种XML解析方法: (1)Dom生成和解析XML文档 *解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构.     * 优点:整个文档树在内存中,便 ...

  9. 【P2401】不等数列(DP)

    这个题乍一看就应该是DP,再看一眼数据范围,1000..那就应该是了.然后就向DP的方向想,经过对小数据的计算可以得出,如果我们用f[i][j]来表示前i个数有j个是填了"<" ...

  10. UVA 11731 Ex-circles (外切圆)

    题意:给你三角形的三条边,求图中DEF的面积和阴影部分的面积. 题解:一些模板,三角形的旁切圆半径:.与 三旁心为 #include<set> #include<map> #i ...