内容简介:在这篇文章中,我们将探索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>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- iOS 注释方法大全 代码块加快捷键注释
- 让 MyBatis Generator 用数据库注释作 Java 注释,并支持附加注解
- 请停止代码注释
- 体面编码之代码注释评论
- Spring 注解注入—@Qualifier 注释
- swagger注释API详细说明
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Rails 5敏捷开发
[美] Sam Ruby、[美] Dave Thomas、[美] David Heinemeier Hansson / 安道、叶炜、大疆Ruby技术团队 / 华中科技大学出版社 / 2017-12-30 / 115.00
本书以讲解“购书网站”案例为主线,逐步介绍Rails的内置功能。全书分为3部分,第一部分介绍Rails的安装、应用程序验证、Rails框架的体系结构,以及Ruby语言知识;第二部分用迭代方式构建应用程序,然后依据敏捷开发模式开展测试,最后用Capistrano完成部署;第三部分补充日常实用的开发知识。本书既有直观的示例,又有深入的分析,同时涵盖了Web开发各方面的知识,堪称一部内容全面而又深入浅出......一起来看看 《Rails 5敏捷开发》 这本书的介绍吧!