要了解RESTful,必须与RPC及SOAP一起对比
Remote Procedure Call (RPC):起源于1976年,允许Client远端呼叫Server的子程式,
然后将执行结果返回给Client;当时的传输资料常使用二进制格式,为了统一资料传输格
式,随后出现了XML-RPC, XML作为资料交换语言的RPC机制。
Simple Object Access Protocol (SOAP):起源于1998年,由于RPC经常被Firewall及
Proxy Server阻挡,为解决兼容及安全性问题,采用HTTP(起源于1989)是更好的方法,
SOAP还提供了一套标准方法让程式间可以互相通信。可以简单把SOAP当作RPC+XML+
HTTP(POST only)+有状态的通信方法。
Representational State Transfer (REST/RESTful)起源于2000年,由于SOAP过于复杂且
依赖状态,REST提倡使用标准的HTTP中的四种动作GET、PUT、POST及DELETE,以及Uniform
Resource Identifier (URI)来指定资源,降低开发的复杂性。可以简单把REST当作PRC+
XML+HTTP(GET,PUT,POST,DELETE)+URI+无状态的通信方法。
发展趋势:
REST风格相比XML-RPC及SOAP更加简洁易用,而JSON资料交换语言相较XML更加轻量,目前
大多数的Web Service都采用REST+JSON作为传输方法。
※ 引述《thefattiger (LawTea)》之铭言:
: 因为Web_Design板满冷清的所以来这边问
: 若不适当请告知
: 小弟不是Web领域的, 但也难免会碰到相关的东西
: 常听到写Web App的人会讲到这个名词
: 但查了一下资讯却还是摸不著头绪
: 估狗RESTful API 大概都是讲到一下几点
: 1.资源要用URL表示
: 这不是本来就这样的吗?
: 还是指别滥用query string?
: 关于query string与RESTful实在众说纷纭, 查了很久也找不到令人信服的答案
: 2.Server要回传对应的Http Status Code
: 这不是也本来就这样的吗?
: 3.用GET/POST/PUT等动词表达对资源的操作
: 意思是说, 本来只有GET/POST用法, 但其实还有PUT/PATCH/DELETE等等
: 应该要善加利用这些动词把操作分得更清楚?
: 4.Stateless
: 这也很常看到,但Http不是本来就Stateless的吗?
: 要记录state一般不都借助于session和cookie?
: 还是不RESTful的Api会有某种state?
: 5.资源传递的格式
: 这部分似乎不在RESTful的范围,可以是json也可以是XML
: 有Web领域的前辈可以指点一下吗?
: RESTful真的很神秘, 问身边的人每个认为的重点都不太一样