您的位置:首页 > 移动开发

SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍

2018-02-23 16:20 971 查看
本篇博文将介绍几种如何处理url中的参数的注解@PathVaribale/@RequestParam/@GetMapping。
其中,各注解的作用为:
@PathVaribale 获取url中的数据;
@RequestParam 获取请求参数的值;
@GetMapping 组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。

@PathVaribale 获取url中的数据

看一个例子,如果我们需要获取Url = localhost:8080/hello/id中的id值,实现代码如下:@RestController
public class HelloController {

@RequestMapping(value="/hello/{id}",method= RequestMethod.GET)
public String sayHello(@PathVariable("id") Integer id){
return "id:"+id;
}
}


同样,如果我们需要在url有多个参数需要获取,则如下代码所示来做就可以了。@RestController
public class HelloController {

@RequestMapping(value="/hello/{id}/{name}",method= RequestMethod.GET)
public String sayHello(@PathVariable("id") Integer id,@PathVariable("name") String name){
return "id:"+id+" name:"+name;
}
}


以上,通过@PathVariable注解来获取URL中的参数时的前提条件是我们知道url的格式时怎么样的。
只有知道url的格式,我们才能在指定的方法上通过相同的格式获取相应位置的参数值。
一般情况下,url的格式为:localhost:8080/hello?id=98,这种情况下该如何来获取其id值呢,这就需要借助于@RequestParam
来完成了。

@RequestParam 获取请求参数的值

直接看一个例子,如下@RestController
public class HelloController {

@RequestMapping(value="/hello",method= RequestMethod.GET)
public String sayHello(@RequestParam("id") Integer id){
return "id:"+id;
}
}在浏览器中输入地址:localhost:8089/hello?id=77,可以看到如下的结果: 



当我们在浏览器中输入地址:localhost:8089/hello?id ,即不输入id的具体值,此时返回的结果为null。具体测试结果如下:



但是,当我们在浏览器中输入地址:localhost:8089/hello ,即不输入id参数,则会报如下错误:



@RequestParam注解给我们提供了这种解决方案,即允许用户不输入id时,使用默认值,具体代码如下:
@RestController
public class HelloController {
@RequestMapping(value="/hello",method= RequestMethod.GET)
//required=false 表示url中可以不传入id参数,此时就使用默认参数
public String sayHello(@RequestParam(value="id",required = false,defaultValue = "1") Integer id){
return "id:"+id;
}
}测试结果如下:





如果在url中有多个参数,即类似于localhost:8089/hello?id=99&&name=xiongda这样的url,同样可以这样来处理。具体代码如下:
@RestController
public class HelloController {

@RequestMapping(value="/hello",method= RequestMethod.GET)
public String sayHello(@RequestParam("id") Integer id,@RequestParam("name") String name){
return "id:"+id+ " name:"+name;
}
}
在浏览器中的测试结果如下:



@GetMapping 组合注解

@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。该注解将HTTPGet映射到特定的处理方法上。
即可以使用@GetMapping(value = "/hello") 来代替@RequstMapping(value="/hello", method = RequestMethod.GET)。即可以让我们精简代码。
例子:@RestController
public class HelloController {
//@RequestMapping(value="/hello",method= RequestMethod.GET)
@GetMapping(value = "/hello")
//required=false 表示url中可以不穿入id参数,此时就使用默认参数
public String sayHello(@RequestParam(value="id",required = false,defaultValue = "1") Integer id){
return "id:"+id;
}
}转载地址:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring boot注解
相关文章推荐