RESTful 网络服务

REST是REpresentational State Transfer缩写。REST定义了一个构建原理的集合,依靠它,可以针对一个系统资源设计网络服务Web services,包括资源状态的标记,在广泛的客户范围通过HTTP的传输,不同语言的编写。REST在2000年首先被Roy Fielding阐述。

REST是为了设计网络应用的一个架构样式。这个观念是这样的,代替复杂机制 如CORBA, RPC 或 SOAP 在机器间的连接,使用简单的HTTP完成机器间的调用。在分布式应用中,如果简化客户端和服务器端的连接非常重要,就应该考虑使用它。可能的情况,服务器将被许多你无法控制的不同客户端所使用;可能的情况,希望能够定期更新服务器而不更新客户端软件。

REST要求开发者显示使用HTTP 方法 ,并且要以和协议定义一致的方式进行。基本的REST设计原理,是在创建,读取,更新和删除操作(CRUD)和HTTP方法之间建立了一对一的映射关系。

  • 创建- POST
  • 更新- PUT
  • 检索- GET
  • 删除- DELETE

REST的优势

使用REST的主要优势, 从客户机和服务器两个角度看,是基于REST的交互结构的使用,这是任何熟悉使用因特网的超文本传输协议(HTTP)的人都熟悉的。基于REST的交互的例子是使用HTTP状态代码传输它们的状态。这样,404意味着没有找到请求的资源; 401代码请求没有授权;200代码意思是成功;并且500意思是发生了未知的服务错误。

例子

REST使用各种HTTP方法(主要是GET/PUT/DELETE ) 操作数据。代替专门的URL使用删除方法 (如, /user/123/delete), 你应该发送一个DELETE 请求到/user/[id] URL, 为了编辑一个用户,检索用户信息,你可以发送一个 GET请求到 /user/[id]。

创建一个用户user,用三个属性:

POST /user
fname=John&lname=Doe&age=25

服务器响应:

200 OK
Location: /user/123

未来,你可能检索用户信息:

GET /user/123

服务器响应:

200 OK
<fname>John</fname><lname>Doe</lname><age>25</age>

编辑这个记录(lname和age将保留改变):

PATCH /user/123
fname=Johnny

更新这个记录(通常lname和age将成为NULL):

PUT /user/123
fname=Johnny

尽管很简单, REST仍然性能丰富;使用RESTful架构没有什么网络服务不能实现。REST不是一个"标准"。例如,W3C没有关于REST的建议。虽然有很多的REST程序框架,但是在各种语言中,如Perl, Java, 或 C#,自己灵活应用REST也是非常容易的事情。

原文链接