博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
@RequestParam与@PathVariable的区别
阅读量:6312 次
发布时间:2019-06-22

本文共 981 字,大约阅读时间需要 3 分钟。

hot3.png

@RequestParam和@PathVariable都能够完成类似的功能。因为本质上,它们都是用户的输入,只不过输入的部分不同,一个在URL路径部分,另一个在参数部分。

    通过@PathVariable,例如/blogs/1

    通过@RequestParam,例如blogs?blogId=1

那么究竟应该选择哪一种呢?建议:

    当URL指向的是某一具体业务资源(或者资源列表),例如博客,用户时,使用@PathVariable

    当URL需要对资源或者资源列表进行过滤,筛选时,用@RequestParam

例如我们会这样设计URL:

    /blogs/{blogId}

    /blogs?state=publish 而不是/blogs/state/publish来表示处于发布状态的博客文章

@RequestParam的用法:

@RequestMapping("/user")@ResponseBodypublic String getUserBlog(@RequestParam("id") int blogId) {   return "blogId = " + blogId;}

    一旦我们在方法中定义了@RequestParam变量,如果访问的URL中不带有相应的参数,就会抛出异常。这是显然的,Spring尝试帮我们进行绑定,然而没有成功。但有的时候,参数确实不一定永远都存在,这是我们可以通过定义required属性:

@RequestParam(name="id",required=false)

    当然,在参数不存在的情况下,可能希望变量有一个默认值:

@RequestParam(name="id",required=false,defaultValue="0")

@PathVariable的用法:

@RequestMapping("/testPathVariable/{id}")public String testPathVariable(@PathVariable("id") Integer id){   System.out.println("testPathVariable:"+id);   return SUCCESS;}

转载于:https://my.oschina.net/langwanghuangshifu/blog/2052114

你可能感兴趣的文章
$GLOBALS["HTTP_RAW_POST_DATA"]与$_POST的区别
查看>>
重温.NET下Assembly的加载过程
查看>>
59. Spiral Matrix II
查看>>
[硬件]点云数据采集2
查看>>
[转载]关于generate用法的总结【Verilog】
查看>>
【Android界面实现】View Animation 使用介绍
查看>>
三合一收款二维码
查看>>
单用户模式启动SQL Server实例总结
查看>>
nodejs+express+mysql 增删改查(二)
查看>>
Iptables实现公网IP DNAT/SNAT
查看>>
redis实现队列
查看>>
025 如何利用github绑定自己的域名
查看>>
清空XX中所有的textbox控件
查看>>
趣文:计算机网络基本概念趣解
查看>>
BizTalk中常用到的表达式
查看>>
Sharepoint学习笔记—调试,诊错系列 (Debug&TroubleShooting)清单
查看>>
android讲义9之向电话本进行批处理的插入
查看>>
IE下使用excanvas.js之后动态创建的canvas不支持getContext的解决方法(转)
查看>>
作者为何要创作《网站转换率优化之道》
查看>>
读书/看电影/看电视剧
查看>>