@Pathvariable的参数允许为空来实现双映射

/ 小问题积累 / 0 条评论 / 858浏览

@Pathvariable的参数允许为空来实现双映射

@GetMapping("/student/{id}")
public List<Student> getStudent(@pathVariable(value="id",required="false") Integer id)
{
    if(id == null)
    {
        查询指定;
    }
    else
    {
        查询所有;
    }
}

但是这样是肯定不行的,这样我们只可以访问/student/id这样的映射路径,但是/student/这样的是不能被这个方法命中的!

这个原因其实很容易理解,因为我们这个方法上面的映射其实已经指出了映射路径是 @GetMapping("/student/{id}"),而/student/和/student/id是两个完全不同的映射,所以肯定不行啦,但是我们可以按照下面的方法解决这样的问题

@GetMapping(value={"/student/{id}","/student/"})
public List<Student> getStudent(@pathVariable(value="id",required="false") Integer id)
{
    if(id == null)
    {
        查询指定;
    }
    else
    {
        查询所有;
    }
}

ok啦,利用getmaping的多映射就OK啦啦啦