Spring Boot @RequestParam元注释 | Java Development

栏目: Java · 发布时间: 5年前

内容简介:在这篇文章中,我们将探索Spring的@RequestParam注释。@RequestParam注释结合web请求参数的控制器的方法。简单来说,我们可以使用 @RequestParam注释从查询参数和参数中获取值。让我们仔细看看一些重点:让我们创建一个简单的控制器来更好地理解这个注释:

在这篇文章中,我们将探索Spring的@RequestParam注释。@RequestParam注释结合web请求参数的控制器的方法。简单来说,我们可以使用 @RequestParam注释从查询参数和参数中获取值。让我们仔细看看一些重点:

@RequestParam映射

让我们创建一个简单的控制器来更好地理解这个注释:

@GetMapping(<font>"/greeting"</font><font>)
 <b>public</b> String sayHello(@RequestParam String name) {
  <b>return</b> </font><font>"Hello "</font><font>+name+</font><font>"!!!"</font><font>;
 }
</font>

在上面的示例中,我们使用@RequestParam注释提取查询参数。这是我们的请求的样子:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://localhost:8080/greeting?name=javadevjournal

参数名称

我们想要设置参数名称并且不想使用默认参数(请求参数的一部分)的情况很少。当我们想要在Id字段中存储电子邮件地址时,我们将采用一个简单的用例。

http://localhost:8080/getUser?email=contact-us@javadevjournal.com

@GetMapping(<font>"/getUser"</font><font>)
  <b>public</b> String getUser(@RequestParam(name = </font><font>"email"</font><font>) String id) {
   <b>return</b> </font><font>"It seems we have a record for email "</font><font> + id;
  }
</font>

我们也可以@RequestParam(name =“email”)或@RequestParam(“email”)。

请求参数的默认值

此注释允许我们为请求参数设置默认值。这对于发送空参数的默认响应很有用。

@GetMapping(<font>"/default-value"</font><font>)
 <b>public</b> String defaultValueExample(@RequestParam(defaultValue = </font><font>"Anonymous user"</font><font>) String name) {
  <b>return</b> </font><font>"Hello "</font><font> + name + </font><font>"!!!"</font><font>;
 }
</font>

让我们看看以下请求的结果是什么:

http:<font><i>//localhost:8080/default-value</i></font><font>
output: Hello Anonymous user!!!
</font>

让我们看看当我们发送名称作为请求的一部分时,这会如何反应

http:<font><i>//localhost:8080/default-value?name=Java Development Journal</i></font><font>
Output: Hello Java Development Journal!!!
</font>

可选的请求参数

默认情况下,带注释的参数  @RequestParam 是必需的。这意味着客户端需要将信息作为请求的一部分传递,否则API将引发错误:

@GetMapping(<font>"/greeting"</font><font>)
 <b>public</b> String sayHello(@RequestParam String name) {
  <b>return</b> </font><font>"Hello "</font><font>+name+</font><font>"!!!"</font><font>;
 }
</font>

如果我们在请求中没有传递“名称”的情况下发送请求,我们将从服务中收到错误。

curl -i -H <font>"Accept: application/json"</font><font> -H </font><font>"Content-Type: application/json"</font><font> http:</font><font><i>//localhost:8080/greeting</i></font><font>
HTTP/1.1 400 
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Sun, 16 Dec 2018 01:39:21 GMT
Connection: close

{  
   </font><font>"timestamp"</font><font>:</font><font>"2018-12-16T01:39:21.193+0000"</font><font>,
   </font><font>"status"</font><font>:400,
   </font><font>"error"</font><font>:</font><font>"Bad Request"</font><font>,
   </font><font>"message"</font><font>:</font><font>"Required String parameter 'name' is not present"</font><font>,
   </font><font>"path"</font><font>:</font><font>"/greeting"</font><font>
}
</font>

下面注释允许我们使用required属性将此参数标记为“ 可选 ” 。让我们更改上面的示例以查看此操作:

@GetMapping(<font>"/optional"</font><font>)
 <b>public</b> String optional(@RequestParam(required = false) String name) {
  <b>return</b> getGreeting(name);
 }
</font>

让我们看看控制器方法的响应是什么:

curl -i -H <font>"Accept: application/json"</font><font> -H </font><font>"Content-Type: application/json"</font><font> http:</font><font><i>//localhost:8080/optional</i></font><font>
HTTP/1.1 200 
Content-Type: application/json;charset=UTF-8
Content-Length: 16
Date: Sun, 16 Dec 2018 01:46:33 GMT
Hello Stranger!!
</font>

多值参数

RequestParam注释 可以在列表中的多个值映射。让我们举个例子,我们希望将多个值作为逗号分隔值发送到方法,并将这些值存储为List。 Spring MVC 将映射列表中以逗号分隔的值。让我们通过一个例子来理解这个:

@GetMapping(<font>"/products"</font><font>)
<b>public</b> String getProducts(@RequestParam List < String > id) {
   <b>return</b> </font><font>"Products: "</font><font> + id;
  }
</font>

以下是我们的请求输出:

curl -i -H <font>"Accept: application/json"</font><font> -H </font><font>"Content-Type: application/json"</font><font> http:</font><font><i>//localhost:8080/products?id=12,13,14</i></font><font>
HTTP/1.1 200 
Content-Type: application/json;charset=UTF-8
Content-Length: 22
Date: Sun, 16 Dec 2018 02:01:46 GMT
Products: [12, 13, 14]
http:</font><font><i>//localhost:8080/products?id=12&id=13</i></font><font>
Output: Products: [12, 13]
</font>

@RequestParam vs @PathVariable

我可以使用两个注释从请求URI中获取值。让我们来看看之间的区别@RequestParam和@PathVariable?

  • PathVariable 是从URI获取占位符。
  • @RequestParam 是从URI获取参数

这是@PathVariable注释的样子

@RequestMapping(<font>"/products/{code}"</font><font>)
<b>public</b> String getProduct(@PathVariable(value = </font><font>"code"</font><font>) String code,
 @RequestParam(value = </font><font>"category"</font><font>, required = false) String category) {
 .......
}
</font>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Black Box Society

The Black Box Society

Frank Pasquale / Harvard University Press / 2015-1-5 / USD 35.00

Every day, corporations are connecting the dots about our personal behavior—silently scrutinizing clues left behind by our work habits and Internet use. The data compiled and portraits created are inc......一起来看看 《The Black Box Society》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具