SpringBoot 学习笔记

使用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";
}

猜你喜欢

转载自blog.csdn.net/sinat_28187455/article/details/81985373