当前位置: 首页 > 知识库问答 >
问题:

Swagger@ApiParam注释使得在Swagger UI中不需要使用@Path变量注释的参数

赵灼光
2023-03-14

我有以下代码,这是我的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发出请求,请求仍然会转到服务器,这会导致不必要的服务器错误。默认情况下,@Path变量的参数“必需”为true(因此,默认值为@PathVariable(name=“userId”,必需=true)),并且在该参数上没有@ApiParam也可以正常工作。就我而言,这些注释不应该改变彼此的行为。那是斯瓦格的错误还是只是滥用?

共有1个答案

左丘烨烁
2023-03-14

@ApiParam的参数“required”在默认情况下为false,因此您只需将其更改为true,就可以通过Swagger UI将其作为必需参数。

@ApiParam(value = "The user id", required = true) @PathVariable("userId") Integer userId
 类似资料:
  • 我正在使用从以下依赖项导入的Swagger/OpenAPIV3注释创建应用程序的API描述: 其中一个批注是批注,它接受名为的属性,该属性允许字符串数组: 现在,我想使用在枚举类上构造的自定义方法,该方法返回允许的字符串数组,因此不需要在每次向枚举添加类型时添加该方法。以便我们可以这样使用它: 现在这是无法编译的,因为在执行注释时不知道该方法。是否有这样的解决方案允许在SwaggerV3注释属性值

  • 问题内容: 我正在使用spring的PreAuthorize注释,如下所示: 但是,我已经在另一个类上将“角色”定义为静态字符串。如果我尝试使用此值: 我收到一个错误: 有没有办法使用PreAuthorize批注访问此类静态变量? 问题答案: 尝试以下使用Spring Expression Language评估类型的方法: 确保指定完全限定的类名。 文献资料

  • 我有一把刀: 问题是,当我试图使用DAO进行加载调用时,使用DynamoDBMapper以field d1作为哈希键来获取项目,它会抛出一个DynamoDBExc0019,说:为公共DAO. getField2()找到了空键,但实际上表的值对应于field d2。问题,这是因为Lombok注释而不是手动突变代码,还是一般来说我们一起使用Lombok和DynamoDBAnnotions?

  • 我使用ASP.NETCore创建了一个Web API,并使用swagger创建留档。我使用APIendpoint上的XML注释在留档中提供附加信息。swagger配置是: 我的一个APIendpoint及其XML注释是: 是一个单独的类,它是APIendpoint所需参数的包装器。 此 API 终结点的 swagger 文档将 VisitorSearchCriteria 的所有属性显示为参数,但它

  • 我收到一个错误,说“空白字段'PERRepo'未初始化” 当我用@RequiredArgsConstructor注释@Service类时,我不明白为什么lombok没有注入我的最后一个变量“personRepo”。 @RequiredArgsConstructor说它注入了用@NonNull注释的最终字段和变量,所以我不明白为什么。 感谢所有回答和提示!

  • 我对这条规则有两个问题: > 在注释函数的最后一个参数中,我找不到正确的语法来将文本字符串与捕获组变量组合在一起。上面的“操作”字段导致以下异常: ParseException:在第34行第72列遇到“+”“+”。我期待其中之一:“)”...“,”... 显然,当我使用“+”将字符串追加到一起时,最后一个参数没有正确地强制转换为字符串。 将最后一个参数中的字符串组合到注释函数中的正确方法是什么?