由于之前不是太经常用,所以对@PathVariable、@RequestHeader、@CookieValue、@RequestParam、@RequestBody、@Validated这几个接受参数的注解总是不太明白,到用的时候也分不清楚到底该用谁,今天就百度了一下,做一个笔记,参考此处:https://www.cnblogs.com/caolei1108/p/6214091.html。
@PathVariable:用来接收restful访问时携带的参数。例如 http:localhost:9001/****/savedemo/white
接收例如
@PathVariable接收参数注意那两个name,如果此处有一个不为name(就是两个不一致时候)需要在@PathVariable中启用value属性进行映射。
@RequestHeader :可以把Request请求header部分的值绑定到方法的参数上。
header中的参数列表@RequestHeader 接收操作:
@RequestHeader 接收这时候访问hello时候,就会在页面显示我们的host信息--localhost:9001
@RequestBody 是用来接收到请求中放入body的参数。(一般讲参数扔到body中的,是post)
@CookieValue 与@RequestBody的用法类似,不过它是可以找到cookie中的参数
@RequestParam 注解用来接收地址中的参数,参数的格式是http://*****?age=10&moth=10。(我们等会儿给出接收操作)
@Validated 接收的和@RequestParam 情况类似,但是区别在于它是用模型接收的,也就是说,如果传入参数不是模型能接收的参数,是会接收不到的。
下面给出@Validated、@RequestBody接收操作和@PathParam、@PathVariable的测试
接收与测试若是@Validated、@RequestBody都能使用,当然要参数传递时的方法不同。上面也有说到他们接收的参数,就不讲传参方法了。
出于好奇我顺便测试了一下@PathParam、@PathVariable 。@PathParam可以不需要模板,能接收到参数,而@PathVariable需要模板,所以接收不到参数。
到最后用一个例子结束吧:
下面看一个url http:loaclhost:/****/savedemo/white?age=10&moth=10 我们应该如何接收这里的三个参数?
首先要确定age=10&moth=10 这一段是需要@RequestParam或者@PathParam 来接收的。再看前面的white?,我们可以确定的是@PathVariable。
方法很多给出一种接收操作:
例子好了,结束!
网友评论