一.基本概念:
REST,即表述性状态转移。它包括以下五个概念:
资源 Resource:服务器上获取到的东西,
资源的表述 Representation:资源的格式,如HTML、XML、JSON、纯文本、图片等,
状态转移 State Transfer:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述,
统一接口 Uniform Interface:通过统一的接口对资源进行操作,
超文本驱动 Hypertext Driven:资源之间通过超链接相互关联。
二.SpringMVC中RESTful的应用
1.基本规则:
- Spring MVC 对 RESTful应用提供了以下支持
- 利用@RequestMapping指定要处理请求的URI模板和HTTP请求的动作类型
- 利用@PathVariable讲URI请求模板中的变量映射到处理方法参数上
- 利用Ajax,在客户端发出PUT、DELETE动作的请求
- 采用HTTP协议规定的GET、POST、PUT、DELETE动作处理资源的增删该查操作
如:
@RequestMapping(value = "/select/{id}",method = RequestMethod.GET)
public String select(@PathVariable("id") Integer id, Model model) {}
@RequestMapping(value = "/insert",method = RequestMethod.POST)
publicString insert(@RequestParam(“user”)User user, Model model){}
@RequestMapping(value = "/update",method = RequestMethod.PUT)
publicString insert(@RequestParam(“user”)User user, Model model){}
@RequestMapping(value = "/delete/{id}",method = RequestMethod.DELETE)
publicString delete(@PathVariable("id") Integer id, Model model){}
2.注意事项:
1).@Controller和@RestController的区别
使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return里的内容,比较适合返回JSON,XML或自定义mediaType内容到页面。
如果需要返回到指定页面,则需要用@Controller配合视图解析器InternalResourceViewResolver才行,即@RestController= @Controller + @ResponseBody。
使用@RequestMapping注解为控制器指定可以处理哪些URL请求,加在类上表示初步的请求映射信息,相对于Web应用的根目录,加再方法上提供进一步的细分映射信息,相对于类定义处的URL。若类定义处未标注@RequestMapping注解,则方法处标记的 URL 相对于Web应用的根目录。
2).@RequestParam与@PathVariable区别
@RequestParam注解是获取静态URL传入的参数,@PathVariable是获取请求路径中的变量作为参数。一般restful风格的参数都是跟在请求路径之后,因此需要使用@PathVariable来获取。只是注意,当发生POST请求时,参数不需要挂在请求路径下,直接在方法中声明对应类型的参数即可获取,不需@PathVariable。