REST 表示状态传输。这是一个体系结构样式,可用于设计网络服务,可以被各种客户端消耗。核心思想是,不使用如CORBA,RPC或SOAP复杂的机制在机器之间进行连接,简单的 HTTP 用于使它们之间调用。
-
创建资源:应该使用 HTTP POST
-
要获取资源:应该使用HTTP GET
-
更新资源:应使用HTTP PUT
-
要删除资源:应使用HTTP DELETE
通常Rest 是基于Web服务返回JSON或XML数据格式作为响应,虽然它并不仅仅限于这些类型。客户端可以指定(使用 HTTP Accept 报头),他们所感兴趣的资源类型,并且服务器可以返回资源,指定它所服务的内容类型资源。
下面是一个可能基于 REST 的控制器,实现REST API。这里所说的“可能”,这意味着可以以另一种方式实现它,还是(或者更纯粹的方式)符合REST风格。
- GET 请求 /api/user/ 返回用户的列表
- GET 请求 /api/user/1 返回ID为1的用户
- POST 请求 /api/user/ 以用户对象的JSON格式创建新的用户
- PUT 请求 /api/user/3 以用户对象作为JSON更新ID为3的用户
- DELETE 请求 /api/user/4 删除ID为4的用户
- DELETE 请求 /api/user/ 删除所有的用
@RestController : 首先,我们使用 Spring4 的新 @RestController 注释。 它的注解消除了注释每个以@ResponseBody的方法。@RestController本身注解为@ResponseBody,并且可以被视为@Controller和@ResponseBody的组合。
@RequestBody : 如果一个方法的参数都注解有@RequestBody,Spring将绑定传入的 HTTP 请求体(在@RequestMapping提到该法的URL)到这个参数。这样做 Spring 将[在后台]使用HTTP消息转换为HTTP请求主体转换成域对象[反序列化要求主体域对象]的基础上,接受或Content-Type头请求。
@ResponseBody :如果一个方法被注解为@ResponseBody,Spring将绑定返回值传出的 HTTP 响应体。这样做Spring将[在后台]使用HTTP消息转换器的返回值转换为HTTP响应体[序列化对象响应正文],根据内容类型出现在请求的HTTP头。 前面已经提到,在 Spring4 可能会停止使用此注释。
ResponseEntity是一个真正处理。 它代表了整个HTTP响应。一件好事是你可以控制任何进入它东西。可以指定状态码,头和主体。它自带几个构造函数执行你想要的 HTTP 响应发送的信息。
@PathVariable 这种表示法表示方法参数应绑定到一个 URI 模板变量[“{}”]。
基本上,@RestController,@RequestBody,ResponseEntity&@PathVariable 都是用 Spring 4 实现 REST API 需要知道的。此外,Spring提供了一些支持类来帮助你实现一些定制。
MediaType : 通过@RequestMapping注解,你还可以,指定要生产或消费的 MediaType(使用生产或消费属性),通过特定的控制器的方法,以进一步缩小映射。
参考:http://www.yiibai.com/spring_mvc/spring-mvc-4-restful-web-services-crud-example-resttemplate.html