1. RESTful Web Service介绍
REST(表述性状态转移)是Representational State Transfer的英文缩写;
是web服务的一种架构风格;
使用HTTP、URI等广泛流行的标准和协议;
轻量级,跨平台,跨语言的架构设计;
2. REST是什么?
是一种设计风格,不是一种标准,是一种思想.
常用于HTTP、URI、XML、JSON以及HTML这些现有的广泛流行的协议和标准
3. RESTful是什么?
RESTful对应的中文是REST式的;
两种主要的web服务:
JAX-RS RESTful Web Service
JAX-WS Web Service
4. REST架构的主要原则
网路上的所有事物都可被抽象为资源(resource)
每个资源都有一个唯一的资源标识符(Resource Identifier)
同一资源具有多种表现形式(xml、json等)
对资源的各种操作不会改变资源标识符
所有操作都是无状态的(Stateless)
无状态性:
无状态性使得客户端和服务器端不必保存对方的详细信息,服务器只需要处理当前request,而不必了解前面Request的历史,从而可以更容易地释放资源,让服务器利用Pool技术来提高稳定性和性能;
5. 资源操作
在restful风格的访问中url地址尽可能简化
http://xxx.com/orders/
GET: 获取一个资源 get/query
POST: 创建一个新的资源 save/query
PUT: 修改一个资源的状态 update/query
DELETE: 删除一个资源 delete/remove
资源展现: XML JSON ........
6. 最佳实践
REST接口设计
URL的组成:
网络协议(http,https)://服务器地址/接口名称/参数列表
URL定义限定:
不使用大写字母
使用中线 - 代替下划线 _
参数列表应该被encode过
相应设计:
Content body(响应体)仅仅用来传输数据
数据要做到拿来就可用的原则,不需要"拆箱"的过程
用来描述数据或者请求的原数据方Header中
7. SpringMVC实现RESTful服务时所涉及到的注解:
@RequestMapping 映射地址的
查询和删除时属性 value 中要有数据
@RequestMapping(value="{username}" method=RequestMethod.GET)
http://xxx.com/orders/张三
添加和修改不用
@PathVariable 解析url地址中的组成参数
查询和删除时属性 value 中要有数据
@PathVariable("id")
@ResponseBody 响应体转换
ResponseEntity 设置状态吗
默认情况下,PUT和DELETE请求是无法提交表单数据的。
解决方案:在web.xml中配置Spring提供的过滤器解决。