设为首页 收藏本站
查看: 998|回复: 0

[经验分享] Openstack Restful Api

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-10-11 10:54:34 | 显示全部楼层 |阅读模式
  转自http://www.choudan.net/2013/07/28/OpenStack-Restful-API.html
  介绍Restful API,以及OpenStack中Restful API的设计
  Restful API
  最近听到很多平台说在提供Restful API,例如OpenStack就是设计这样的API,淘宝的飞天对外提供的也是Restful API。那么到底什么才是Restful API呢,带着这些问题在网上翻阅了一遍,记录在此。
  首次大家可以参考这个链接来掌握Restful概念,文章开头写的很有启发性,网站即软件。Rest是由Roy Thomas Fielding大神在他博士论文中提出的,他在自己的论文摘要中写道。


本文研究计算机科学两大前沿—-软件和网络—-的交叉点。长期以来,软件研究主要关注软件设计
的分类、设计方法的演化,很少客观地评估不同的设计选择对系统行为的影响。而相反地,网络
研究主要关注系统之间通信行为的细节、如何改进特定通信机制的表现,常常忽视了一个事实
,那就是改变应用程序的互动风格比改变互动协议,对整体表现有更大的影响。我这篇文章的
写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设
计,得到一个功能强、性能好、适宜通信的架构。
  Rest即Representational State Transfer,中文大家翻译成表述性状态转移。上面链接出来的博客解释的很清晰,Restful最大的两个特点是:

  • 无状态的: 客户端与服务器端的交互请求之间是无状态的,每个请求都必须包含理解请求的所必须信息,没有上下文,例如服务器重启了,也不影响这一次请求
  •   资源:在Restful的角度看来,Web上的所有东西本质上都是资源,例如一张照片,一条记录等等,每个资源都使用URI得到唯一的地址。对于资源,可以使用四个HTTP动词来操作,GET POST DELETE PUT。使用HTTP这四个动词就可以很好的处理应用程序需求,如CRUD操作。
    DSC0000.jpg

  举一个具体的例子来展示到底是如何利用HTTP 头中的这四个动词来完成CRUD操作。
DSC0001.jpg
  需要深刻的理解这两点,尤其是资源两字,精髓所在,然后再看OpenStack中的API设计就更加清晰明了。
  Routes
  对Restful API有了一个基础的了解,那么我们来看通过URL是怎样映射到具体的应用程序操作函数上了。在OpenStack中的API Daemon都会有一个Router类,来构建资源与URL直接的映射关系,完成从接收到URL请求然后映射到具体的函数上执行的整个过程。
  这就要了解Python 中的Routes模块。
  Routes 是一个python重新实现的Rails routes system,用来将urls映射到应用具体的action上,相反的,还生成url。由于Routes是Rails routes system的python实现,并且网上关于Routes的文档很少,故从rails的routes system入手,就能很好的理解Routes库了。
  首先看一个简单的例子,就明白routes的作用

例如浏览器接收到下面的HTTP请求, GET /instances/1 Rails的路由请求则负责将此请求解析后dispatch来代码中的具体某个函数,完成调用,例如返回虚拟机的信息。
  Rails Routes
  下面的内容参考于此处
  Rails支持多种URL路径,包括RESTful路径,命名路径,嵌套路径,常规路径等,其中RESTful路径是Rails默认的标准路由方式。

  • RESTful路径:前面我们多次强调关键在于理解在restful的角度来看,web上的所有东西本质上是资源。前面也的图片也提到了将photos视为一种资源,结合HTTP动词和RESTful URL之后,路由引擎将URL映射到相应的Controller上去,然后调用对应的函数做处理。
  • 嵌套路径:可以在一个resource中包含另一个resource。
  其他路径的解释参考上面给出的链接。
  OpenStack API
  在分析OpenStack API的过程,发现这一部分的内容太多,改到下一篇文章中。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-125363-1-1.html 上篇帖子: OpenStack资料整理[持续更新中...] 下篇帖子: openstack cinder default volume
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表