REST概述
- 传统的软件架构是以操作和处理为中心的,互联网软件架构应当以信息和资源为中心,REST就是倡导后者的一种软件架构风格。
- REST是REpresentation State Transfer的缩写,由Roy Fielding于2000 年,他在他的博士论文中首次提出,是替换基于SOAP(Simple Object Access Protocol)的Web Service的方案,SOAP关注行为和处理,REST则关注数据。
- REST有五个关键词,分别是:资源、资源的表述(资源可以用最适合资源使用者的形式进行表述)、状态转移、统一接口、超文本驱动(通过URL进行识别和定位)。REST本身并不是一种具体的技术而是一种架构风格,符合这种风格的架构就称为RESTful架构,这是被公认的最适合互联网应用的分布式架构(另外两种是DO和RPC)。简单的说,所谓的REST就是将资源的状态以最适合客户端或服务器的形式从服务器转移到客户端或从客户端转移到服务器。
- 由于REST本身关注资源而不是行为,所以REST中的行为是由HTTP方法来定义的,具体的说就是用POST、GET、PUT(或PATCH)、DELETE分别对应CRUD(增删查改)操作。
REST中的四种行为
- GET /employee/1122:将编号为1122的员工的表述转移到客户端
- POST /employee
- DELETE /employee/1122
- PUT /employee/1122
Spring中对REST的支持
Spring从3.x版本开始对REST提供支持,在目前的版本中(4.x)主要包括以下几个方面:
- @GetMapping(get请求) / @ PostMapping(post请求) / @DeleteMapping(delete请求) / @PutMapping(put请求) / @PatchMapping(patch功能同put相同,用于修改资源)
- @PathVariable(用来获得请求url中的动态参数的)
- @ResponseBody (将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。)/ @RequestBody(将HTTP请求正文转换为适合的HttpMessageConverter对象)和HttpMessageConverter(对请求内容和返回内容起转换作用)
- HiddenHttpMethodFilter(Spring支持REST,然而浏览器只支持get,post请求,所以通过这个类来规避这个问题)
- ContentNegotiationViewResolver(确定最佳视图解析器匹配)
- @RestController(注解相当于@ResponseBody + @Controller合在一起的作用)
- RestTemplate(?)
网友评论