说明:
(1)上篇博客【RESTful开发风格3:RESTful基本使用一:客户端是HTML时,Restful演示;】 演示了RESTful的最基本的使用;只不过只是RESTful的最基本使用还不够,其还存在一些问题。本篇博客就是来解决三个问题的其中两个:
● 【@RestController注解】:简化@ResponseBody注解的使用方式;
● 【路径变量】:使用【{} + @PathVariable注解】的方式,获取uri中的参数;
目录
一:【@RestController注解】;
二:路径变量(uri中的变量);
一:【@RestController注解】;
问题:【为了满足RESTful开发风格】→【方法需要完成的是返回字符串,而不是页面的跳转】→所以,【方法上需要添加@ResponseBody注解】:这有点麻烦;
解决策略:为了【为了满足RESTful开发风格】→【同时,不再在每个方法上都使用@ResponseBody注解】→@RestController注解应运而生;
问题:【为了满足RESTful开发风格】→【方法需要完成的是返回字符串,而不是页面的跳转】→所以,【方法上需要添加@ResponseBody注解】:这有点麻烦;
解决策略:为了【为了满足RESTful开发风格】→【同时,不再在每个方法上都使用@ResponseBody注解】→@RestController注解应运而生;
二:路径变量(uri中的变量);
路径变量是什么:
● 在【RESTful开发风格1:RESTful开发风格初体验一:RESTful开发风格简介;】中介绍过,如【 POST /article/1】这样的uri的意思是【创建一个id=1的文章】;
而这种情况,id这个参数,没有按以前熟悉的【 POST /article?id=1】方式;而是把这个参数放在了uri中;
● 像这种放在uri中的变量,就称之为路径变量;即,id=1这个变量不是请求参数,它是uri的一部分;
● 自然【 POST /article/1】在性质上和【 POST /article?id=1】一样;只是【 POST /article/1】是路径变量的形式,【 POST /article?id=1】是请求参数的形式;(起码目前,自己可以这样理解)
……………………………………………………
● 路径变量说白了就是【在uri中的,可变的一个值】;然后在RESTful中,路径变量一般就是id值;
【 POST /article?id=1】这种请求参数的形式中,我们获取id的值是比较容易的;
但是,【 POST /article/1】这种路径变量的形式,我们如何获取其中的id变量值嘞?:为此,Spring MVC提供了路径变量的支持;
获取路径变量:比如我们要获取如【/restful/request/100】中的路径变量的值100;那么就可以:首先,在@PostMapping注解的url中,添加{一个变量名}(这个名字可以随便取);然后,在方法的参数中,使用@PathVariable注解,来接收这个变量值;
说明:@RequestParam 和 @PathVariable 都是 springMVC的注解,都用于接收请求中的参数,@RequestParam 是从request里面直接拿取值,而 @PathVariable 则是从一个URI模板里面来填充,也就是RESTful风格。
启动Tomcat,观察效果:
路径变量是什么:
● 在【RESTful开发风格1:RESTful开发风格初体验一:RESTful开发风格简介;】中介绍过,如【 POST /article/1】这样的uri的意思是【创建一个id=1的文章】;
而这种情况,id这个参数,没有按以前熟悉的【 POST /article?id=1】方式;而是把这个参数放在了uri中;
● 像这种放在uri中的变量,就称之为路径变量;即,id=1这个变量不是请求参数,它是uri的一部分;
● 自然【 POST /article/1】在性质上和【 POST /article?id=1】一样;只是【 POST /article/1】是路径变量的形式,【 POST /article?id=1】是请求参数的形式;(起码目前,自己可以这样理解)
……………………………………………………
● 路径变量说白了就是【在uri中的,可变的一个值】;然后在RESTful中,路径变量一般就是id值;
【 POST /article?id=1】这种请求参数的形式中,我们获取id的值是比较容易的;
但是,【 POST /article/1】这种路径变量的形式,我们如何获取其中的id变量值嘞?:为此,Spring MVC提供了路径变量的支持;
获取路径变量:比如我们要获取如【/restful/request/100】中的路径变量的值100;那么就可以:首先,在@PostMapping注解的url中,添加{一个变量名}(这个名字可以随便取);然后,在方法的参数中,使用@PathVariable注解,来接收这个变量值;
说明:@RequestParam 和 @PathVariable 都是 springMVC的注解,都用于接收请求中的参数,@RequestParam 是从request里面直接拿取值,而 @PathVariable 则是从一个URI模板里面来填充,也就是RESTful风格。
启动Tomcat,观察效果:



