Swagger @ApiParam注释使Swagger UI中不需要使用@PathVariable注释的参数

时间:2018-10-30 14:46:32

标签: java spring swagger

我有以下代码,这是我

的API的精髓
    import org.springframework.web.bind.annotation.PathVariable;
    import io.swagger.annotations.*;

    @GetMapping(value = "/{userId}")
        public String getUserHistory(ApiParam(value = "The user id") 
                    @PathVariable("userId") Integer userId, Model model) throws NotFoundException {
            // fetch user info
            model.addAttribute("userInfo", userInfo);
            return "userHistory";
        }

如果我具有@ApiParam批注,则@PathVariable变得不是必需的,因此,如果我不输入userId并通过Swagger UI发出请求,该请求仍会到达服务器,这会导致不必要的服务器错误。 @PathVariable的参数“ required”默认情况下为true(因此,默认值为@PathVariable(name =“ userId”,required = true)),并且在该参数上没有@ApiParam的情况下也可以正常工作。就我而言,这些注释不应改变彼此的行为。那是Swagger错误还是只是滥用?

1 个答案:

答案 0 :(得分:3)

@ApiParam的参数“ required”默认情况下为false,因此您只需将其更改为true,即可通过Swagger UI进行设置。

@ApiParam(value = "The user id", required = true) @PathVariable("userId") Integer userId