拓展:白话讲解RESTful架构
最近看一些招聘信息,也是看到了很多要求RESTful架构的,然后就单独拿出一些时间来了解一下,然后按照自己的理解白话整理一下。
1. 什么是REST
说白了就是一个api的设计规范,不属于什么技术类的东西。符合REST约束的,就叫RESTful
2.怎么约束的
五个点:
资源与URI
统一资源接口
资源的表述
资源的链接
状态的转移
第一个点:资源与URL
主要就是url的几个规范:
使用_或-来让URI可读性更好:单词分割的时候多个单词之间用_或者-进行分割。
使用/来表示资源的层级关系:这个没什么过多解释的
使用?用来过滤资源:?后面表示的是url附带的信息,key=>val的形式
,或;可以用来表示同级资源的关系:这个没怎么看明白,大概的意思是;和,用来分割同意目录下的两个文件。
第二点:统一资源接口
请求的时候用到的请求方式是统一的,例如:POST,GET,PUT,DELETE,等等
第三点:资源的表述
大概意思就是如果是资源请求,那么需要确定请求的资源是什么类型,是json还是xml还是图片之类。
第四点:资源的链接
这部分的重点是"超媒体即应用状态引擎(hypermedia as the engine of application state)",加一个link头,告诉客户端怎么访问下一页和最后一页,其实就是两个链接。
第五点:状态的转移:
服务端不保存客户端状态。
总结
什么是REST:结束语
REST 描述了一个架构样式的互联系统(如 Web 应用程序)。REST 约束条件作为一个整体应用时,将生成一个简单、可扩展、有效、安全、可靠的架构。由于它简便、轻量级以及通过 HTTP 直接传输数据的特性,RESTful Web 服务成为基于 SOAP 服务的一个最有前途的替代方案。用于 web 服务和动态 Web 应用程序的多层架构可以实现可重用性、简单性、可扩展性和组件可响应性的清晰分离。开发人员可以轻松使用 Ajax 和 RESTful Web 服务一起创建丰富的界面。
RESTful的关键
RESTful的关键是定义可表示流程元素/资源的对象。在REST中,每一个对象都是通过URL来表示的,对象用户负责将状态信息打包进每一条消息内,以便对象的处理总是无状态的。
RESTful的第二大问题是组合管理及流程绑定。企业对正规的(基于SOAP)SOA最大的反对声之一便是,这种等级的发现和绑定灵活性不足以适应复杂性。