理解RESTful

RESTful是什么

REST是一套对资源操作的规范,资源通常指的是可通过http协议操作的存储在服务器上的文字、文件、图片和服务器可提供的服务等资源。采用这套规范构建的以网络为基础的应用软件的架构叫做RESTful架构。

详细介绍可以参考:
The RESTful CookBook
Richardson Maturity Model

为什么要用RESTful

目的是在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。

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

如何构建RESTful架构

主要体现在三个方面:

Resources

通过唯一的URI标识资源。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。服务器可提供的操作服务本身也是一种资源。

如:http://localhost:port/goods/1
1.该URL表示编号为1的商品。
2.这是服务器提供的可操作服务资源。

HTTP Verbs

主要是通过HTTP不同的方法来表示对资源不同的操作。如:GET(查)、POST(增或改)、PUT(改)和DELETE(删)来

GET http://localhost:port/goods/1 表示获取id=1的商品信息
PUT/POST http://localhost:port/goods/1 表示更新商品的信息
DELETE http://localhost:port/goods/1 表示删除id=1的商品
POST http://localhost:port/goods 表示创建商品

GET的返回结果,只有资源信息:

GET /goods/1  HTTP/1.1
[various other headers]

{
    "id": "1",
    "name": "csdn"
}
Hypermedia Controls

它指的是 HATEOAS (Hypertext As The Engine Of Application State)。假设我们一开始服务只能发布一个众所周知的URI(返回一个包含调用者可访问的云资源表示[representation]的云表示,它也可以是一个URI链接)。通过检查这些表示就可以发现整个系统中的其他每个URI(包括所有完成状态改变的URI)。通俗的讲就像访问网站一样,通过一个页面可以访问到其他相关页面。

GET返回的结果,将附带可供操作的链接:

GET /goods/1  HTTP/1.1
[various other headers]

{
    "id": "1",
    "name": "csdn",
    "links": {
        "delete": "xxxxx",
        "update": "xxxxx"
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值