【问题标题】:PathVariable as optional in swagger SpringFox(3.0.0)PathVariable 在 swagger SpringFox(3.0.0) 中作为可选
【发布时间】:2020-11-16 09:40:19
【问题描述】:

我最近已升级到最新版本的SpringFox(3.0.0)
标记为required = falsePathVariable 显示为必填。

下面是我的控制器方法代码

@GetMapping(path = { "/persons", "/persons/{id} })
public List<Person> getPerson(@PathVariable(required = false) String id) {
    
}

我试过添加@ApiParam,默认是false。但是,在大摇大摆的情况下,它仍然显示为强制性的。

以前SpringFox(2.9.0) 工作正常,大摇大摆地被标记为可选

我们将不胜感激。
谢谢

【问题讨论】:

  • 在 OpenAPI 中,路径参数为always required。要拥有带有可选参数参数的路径,您需要定义 2 个路径 - 带有和不带有该参数。
  • @Helen 我写了 'GetMapping(path = {"/descriptive","/{periodName}/descriptive"})' 但仍然有同样的问题!
  • @OmidAshouri,就我而言,它适用于您的代码结构。我的控制器中有:@GetMapping(path = {"/{mailId}", ""}) ResponseEntity&lt;?&gt; getMails(@PathVariable(required = false) String mailId); 和 SpringFox 3.0.1。然后 SwaggerUI 显示 2 个端点,一个带有 PathVariable,一个没有。

标签: java swagger-ui openapi springfox


【解决方案1】:

始终需要路径参数。如果我们有一个可选的路径变量,那么我们需要定义两个单独的端点。

我添加了两个端点来解决我的问题,如下所示。

@GetMapping(path = { "/persons })
public List<Person> getAllPerson() {
    
}

@GetMapping(path = {"/persons/{id} })
public List<Person> getPersonById(@PathVariable String id) {
    
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2017-10-01
    • 2021-09-01
    • 2020-02-25
    • 2019-04-14
    • 1970-01-01
    • 2016-07-09
    相关资源
    最近更新 更多