@PathVariable与@PathParam的区别

一般来讲的话是以两种方式为主,分别为Post和Get,这两种方式都是向一个url传参,而Get方式体现到了地址栏里,Post方式则将内容放在了 body 里面。
@PathParam 和 @PathVariable 注解是用于从 request 中接收请求的,两个都可以接收参数,关键点不同的是@PathParam 是从 request 里面拿取值,而 @PathVariable 是从一个url模板里面来填充(绑定 URL 占位符到功能处理方法的参数上,主要实现RESTFULL风格的请求),也就是从地址栏中取值(以键值对形式)。
@PathVariable
它是以“/”方式来获取参数值。
也是RSET风格的springmvc取值。

在这里插入图片描述
如上图:此种获取参数值的方式,需要在value中指定一个key,并且在方法参数中一定要有这个key,不然报500错误。当你只设置一个属性的话,可以把value属性去掉。如下图:

 在这里插入图片描述

 


注意{UserNuber}对应的@PathVariable(“UserNuber”)的英文字母必须一致,否则将会获取不到任何值。
@PathVariable 属性中的name与value功能是相同的。
required属性为true的话, 地址中如果没有这个参数会报错,为false时则会忽略与@Autowired中的required功能是相同的。
比如:@PathVariable(value = “name”, required = false)这样它就不会报错,会直接忽略没有参数的报错。

在这里插入图片描述
它的访问地址:http://localhost:8080/HNZGDXSYS/ImgbyNumber/YG0001
这时候,我们拿到的参数Number为:YG0001,效果图如下:

 

在这里插入图片描述
@PathParam
它是以键值对方式来获取参数值的。
这个注解相对简单,就是从地址栏取参数值,采用的是传统的拼接参数方法。
如:http://localhost:8080/HNZGDXSYS/ImgbyNumber?name=李四&name1=张三

 

在这里插入图片描述
它的不同点的是@PathVariab在没有对应属性时会是一个null值,不会报错,而@PathParam则会报404异常。
效果如下图:

 

在这里插入图片描述
@PathVariable与@PathParam两者之前的优缺点:
@PathVariable
直接获取url模板里的值是很方便的,不用自己去获取 request 里的固定参数,如果只是 ID 这种单个或者多个数字字母,使用 @PathVariable 会好很多。
1.虽然说直接获取 URI 模板里的值是很方便的,但是我们需要拿到一些带有后缀名的参数值的话,它会把参数值的后缀名给忽略掉,我们要是拿到后缀名就还需要写正则来获取到。
2.如果你斜杠后面的参数为空值,那么它会报404错误。
@PathParam
1.如果你需要获取的参数值存在一些符号之类的。
比如:string;str;ing等等
这时,我们可以优先使用@PathParam,我们都知道它是获取request中的值的,这时我们只需要直接获取你需要拿到的那个参数值对应的那个键后,我们就直接拿到值了。
2.就算你参数后面的值为空,那么它也能拿到空值,不会报异常。
个人总结:
如果我们是传单个参数的时候,我们可以直接放在url地址里这样就比较方便,也就是@PathParam ,而不使用@PathVariable。
如果我们使用@PathVariable的话,还需要从 request 请求里提取指定参数和这,这样我们就多了一步操作。
当我们传多个参数和不同类型的参数,我觉得就使用@PathParam。
但是如果为了安全起见的话,使用@PathVariable会比较安全一点,而@PathParam的话,就是从地址栏取参数值,采用的是传统的拼接参数方法,这样的话我们在请求的同时会在地址栏上看到你的参数值等等。
因此我们要根据不同的需求来决定我们使用这两者。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值