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

springdoc-openapi-ui swagger不理解@ path variable required = false flag

詹唯
2023-03-14

我使用此库生成文档:

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.5.0</version>
</dependency>

我有这个控制器:

@RestController
public class TestController {

    @GetMapping("/test{hz}")
    public String test(@PathVariable(value = "hz", required = false) String hz) {
        return "test";
    }
}

但是我留档:

为什么< code>required = false不起作用?

我试过这个:

@RestController
public class TestController {

    @GetMapping("/test{hz}")
    public String test(
            @Parameter(description = "foo", required = false)
            @PathVariable(value = "hz", required = false) String hz) {
        return "test";
    }
}

这也不管用

编辑:(回答@Helen comment)-我当然知道这一点:

@RestController
public class TestController {

    @GetMapping(value = {"/test", "/test{hz}"})
    public String test(
            @Parameter(description = "foo", required = false)
            @PathVariable(value = "hz", required = false) String hz) {
        return "test";
    }
}

我试过了这个:

@PathVariable(value = "hz", required = false) Optional<String> hz

它使文档变得更糟。所以我没有加这个代码。对于< code>{"/test ","/test{hz}"},它看起来像这样:

共有1个答案

朱兴运
2023-03-14

这符合 OpenAPI 规范。

当客户端进行API调用时,每个路径参数都必须替换为实际值。在OpenAPI中,路径参数是使用in: path定义的。参数名称必须与路径中指定的名称相同。还要记住添加required: true,因为路径参数总是必需的。

您可以查看以下文档:

    < Li > https://swagger . io/docs/specification/descripting-parameters/# path-parameters
 类似资料:
  • 我使用springdoc-openapi来记录我的REST API。错误由错误对象返回,该对象具有和。我使用注释来记录一个示例。然而,我需要每个不同的错误不同的例子。有没有办法,怎么做? 我的代码示例:

  • 是否可以使用接口而不是实现这些接口的控制器类来生成swagger ui文档? 将文档放在实现类中会使它看起来杂乱无章。Springfox有这个选项,它在springdoc中可用吗?如果是,怎么做?

  • **代码:(类名已重命名)** 两个版本中的CheeseDTO YAML: 使用springdoc-openapi-ui 1.3.9,我的yaml是这样生成的: 昂首阔步3注释: OpenAPi生成器maven插件 有没有办法用springdoc-openapi-ui>1.4.0生成?我必须更改我的大摇大摆的注释或更改我的java生成器吗?

  • 我的应用程序是spingmvc而不是boot。 我正在使用springdoc openapi ui 1.4.4 另外,我在@configuration类中添加了以下导入:; 并实现如下所示的bean 但是当我尝试 给我404。 但是我得到了 它也进来 也没有定义下拉列表。 如果我加上 申请。然后我得到 我做错了什么? 我需要导入任何其他类来获得组功能工作吗? 谢啦

  • 我有一个简单的引导应用程序,其中我添加了开放api swagger依赖项 以及这些属性 我收到这些错误(在呼叫时http://localhost:8080/swagger-用户界面/索引。html): 这是我的控制器: 知道吗?

  • 我使用昂首阔步。我添加了以下配置来禁用中的URL 配置 但是当我撞上了https://petstore.swagger.io/v2/swagger.json在explore文本框中,它仍然向我显示如下图所示的URL。 昂首阔步的形象