利用Spring注解MVC的时候我们发现有两个注解@PathVariable和@RequestParam
举例如下:
http://localhost:8080/api/show/id?id=22
在restful格式中我们采用
http://localhost:8080/api/show/{id}?id=22
这样path上的参数我们就可以通过@PathVariable获取,而参数上的值可以通过@RequestParam获取
针对其具体的属性我们查看源码:
public @interface PathVariable {
/** The URI template variable to bind to. */
String value() default "";
}
public @interface RequestParam {
/**
* The name of the request parameter to bind to.
*/
String value() default "";
/**
* Whether the parameter is required.
* <p>Default is <code>true</code>, leading to an exception thrown in case
* of the parameter missing in the request. Switch this to <code>false</code>
* if you prefer a <code>null</value> in case of the parameter missing.
* <p>Alternatively, provide a {@link #defaultValue() defaultValue},
* which implicitly sets this flag to <code>false</code>.
*/
boolean required() default true;
/**
* The default value to use as a fallback. Supplying a default value implicitly
* sets {@link #required()} to false.
*/
String defaultValue() default ValueConstants.DEFAULT_NONE;
}
我们发现@RequestParam有value和required两个属性
使用方式举例如下:
@RequestMapping(value = "/show/{id}", method = RequestMethod.GET)
@ResponseBody
public List<String> show(@PathVariable String id,
@RequestParam(value = "id", required = false) String uid) {
List<String> list = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
list.add(id + i);
}
return list;
}