一、restful简介
Rest是Fielding 博士在2000年提出的一个互联网软件的架构原则,起名为Rest即 Representational State Transfer。
关于Restful风格的架构设计具有以下一些专有名词和特点:
1、表现层资源
所谓资源,表示网络上的一个具体信息或实体,在Restful风格中,URI、网页page等都属于资源范畴。例如我们访问:http:localhost:8091/web-student/course/323;这个URI所表示的含义就是类型为course,id为323的课程资源。
2、状态转化
资源是一种信息实体,它可以有多种表现形式,访问一个网站,就发生了一次客户端和服务器的互动,这个互动过程就涉及到了数据和状态的变化。HTTP协议是一个无状态协议,所以状态都保存在服务器端,所以客户端想要访问操作服务器,就设计到client-server间的状态转化(state transfer),而这种转化是建立在表现层之上的,所以就是表现层(client-server)状态转化。
3、4个HTTP基本操作
客户端可以通过http协议提供的基本操作:get-获取资源、post-新建资源、put-更新资源、delete-删除资源来操作服务端资源。下面是关于URI和HTTP四个方法的关系。
The following table shows how HTTP methods are typically used in a RESTful API:
HTTP methods |
||||
Uniform Resource Identifier (URI) |
GET |
PUT |
POST |
DELETE |
Collection, such ashttp://api.example.com/resources/ |
List the URIs and perhaps other details of the collection's members. |
Replace the entire collection with another collection. |
Create a new entry in the collection. The new entry's URI is assigned automatically and is usually returned by the operation. |
Delete the entire collection. |
Element, such ashttp://api.example.com/resources/item17 |
Retrieve a representation of the addressed member of the collection, expressed in an appropriate Internet media type. |
Replace the addressed member of the collection, or if it does not exist, createit. |
Not generally used. Treat the addressed member as a collection in its own right andcreate a new entry in it. |
Delete the addressed member of the collection. |
总而言之,Restful设计风格把每一个URI视作一种资源,客户端通过http的基本操作实现对服务端资源的使用。
二、Rest式web服务及发展历史:
使用restful风格进行web service 服务调用的方式叫做rest式web服务,在rest之前,J2EE 5中便提供了基于xml的web service API支持(JAX-WS)和JAX-RPC远程调用API,J2EE6中提供了一套规范的基于rest风格的web service API(JAX-RS),从这点来看rest相较于前两者应该有它的独特之处,才使得java平台新提供一套以rest为基础的web Service 调用接口。
***********************************************由《java restful web service实战》总结而来***************************************
1、从方法信息角度看,相对于RPC调用,Rest采用标准HTTP方法(get、put、post、delete),而RPC请求均使用post方法,该方法信息包含在SOAP协议或者HTTP协议包中,不具有通用性。
2、从作用域角度看,rest采用uri定义作用域,而RPC这一信息同样包含于协议包中,不能直观呈现。
3、RPC风格的两大代表:j2ee5中的JAX-RPC和Big Web Service。
JAX-RPC使用xml格式封装方法调用,以HTTP协议进行传输,看似和Rest使用xml进行资源描述相似,但内容上大相径庭。Rest的xml中只包含资源描述,而RPC还包括数据请求格式和额外的方法参数等信息。
Big Web Service 是使用基于SOAP+WSDL+UDDI+WS这一标准技术栈实现RPC风格的服务调用统称。相较于Rest式的web服务,具有更强大、复杂的设计。而rest则更简单轻便,无需引入SOAP消息传输、注册服务、客户端调用等等这些传统web 服务调用的操作。这就体现了rest的短小精悍特点。所以会比其他方式的服务调用快速。但在安全方面可能还有待提高。
三、总结
基于原生,所以快速、简洁;中西结合,疗效更佳