使用Restful Api方式来测试时相关的注解
一、参数相关
@PathVariable
使用URItemplate样式映射,即url/{param}这种形式,一般我们在使用DELETE、PUT方法会使用到的,我们可以获取URL后所跟的参数,示例代码如下:
@RequestMapping(value = "/get/{key}",method = RequestMethod.GET)
public String getTest(@PathVariable("key") String key){
return redisService.get(key).toString();
}
@RequestParam
一般我们使用该注解来获取多个参数,在()内写入需要获取参数的参数名即可,一般在PUT、POST中比较常用,示例代码如下:
@RequestMapping(value = "/set",method = RequestMethod.POST)
public void setTest(@RequestParam("key") String key,
@RequestParam("value") Object value)
{
redisService.set(key,value,new Long(100));
}
@RequestBody
该注解和@RequestParam殊途同归,我们使用该注解将所有参数转换,在代码部分在一个个取出来,也是目前使用到的最多的来获取参数的注解方式,示例代码如下:
@RequestMapping(value = "/set",method = RequestMethod.POST)
public void set(@RequestBody Map<String,String> reqMap){
String key = reqMap.get("key").toString();
String value = reqMap.get("value").toString();
redisService.set(key,value);
}
对象获取参数
当入参数量非常多时,上述的三中注解获取参数的方式都会让代码看起来十分繁杂,所以我们也可以通过对象来直接获取参数,需要注意的是参数的名称必须和对象的属性名保持一致,示例代码如下:
//获取参数的对象定义,省略getter,setter
public class TestKV {
private String key;
private String value;
@Max(value = 9999,message = "超过最大值")
@Min(value = 0,message = "小于最小值")
private int timeout;
}
//用对象获取POST的参数
@RequestMapping(value = "/set",method = RequestMethod.POST)
public void setTest(TestKV testKV){
redisService.set(testKV.getKey(),testKV.getValue());
}
@Valid对参数进行校验
在使用对象接收参数时,可以对参数进行校验。首先对属性进行范围或者其他类型的限制,然后在用来获取参数的对象前加入@Valid注解,并在参数中加入BindingResult来辅助我们发现校验的结果,示例代码如下:
@RequestMapping(value = "/set",method = RequestMethod.POST)
public String setTest(@Valid TestKV testKV, BindingResult bindingResult){
if(bindingResult.hasErrors()){
return bindingResult.getFieldError().getDefaultMessage();
}
redisService.set(testKV.getKey(),testKV.getValue());
return "success";
}