restful http架构实战

INFOQ昨天这篇文章对近期REST架构的讨论进行了一次小小总结,是关注REST架构网友的重要阶段性文章:
1. GET POST PUT DELETE是统一接口,是对每个资源都有一个统一的GET POST PUT DELETE操作。GET POST PUT DELETE是独立于资源的。

GET PUT DELETE是幂等的,可以被多次执行,结果都是同样,而POST 不是幂等的。所以,POST是最后不得不选择的方法,POST可以弥补PUT方法,
http://roy.gbiv.com/untangled/2009/it-is-okay-to-use-post

GET: 获得资源的表现输出;
DELETE:删除资源
PUT:用客户端管理的id创建一个新资源;修改一个资源替换它;
POST:用服务器端管理的id创建一个资源;创建一个子资源;更新部分资源

RESTful HTTP可以实现CRUD,但是不只是CRUD。

2. Resources 资源最初定义不是基于对象模型,而是基于网络资源角度。对象模型可以映射到资源。资源是可以通过唯一标识URI从网络端访问的。如下图

资源将产生表现输出,资源自己不会通过网络传送,是资源的表现传送。一个表现输出由数据和描述数据的元数据组成。

总结:REST和SOA区别是从不同角度看问题,SOA是从服务 方法 模型看问题,比较容易理解,但是可伸缩性就成了第二位,也就是没有融入SOA血液中。而REST则是把可伸缩性融入血液,REST就是分布式 可伸缩的,这方面可见标签REST中我写的其他文章。


原文:
RESTful HTTP in practice

还有HEAD和OPTION操作呢?

HEAD和OPTION操作可以看成是元数据,用来操作http数据的。

这篇文章还给出了具体代码方案:
使用JSON-lib来实现资源表现输出;
xLightweb实现http客户端和服务器之间通讯。


补充一下,REST的无状态和缓存特性,决定了它把可伸缩性融入了血液。至于SOA嘛,你完全可以遵循REST的原则去搞SAO。
所以,貌似SOA和REST没有可比性,两个东西所说完全不是一回事。REST是http的理论基础,遵循REST就可以正确的使用HTTP,REST就是那篇论文,读懂了,就REST了,反正我是看不懂,倒是老大的几篇关于REST文章比较易读。SOA是什么呢....,KAO,不知道>_<


[该贴被cats_tiger于2009-08-21 13:00修改过]