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

带有路径参数和命令对象的Springdoc-OpenAPI

傅振濂
2023-03-14

我在Springdoc生成的OpenAPI规范中得到了验证错误,并且无法在网上找到与Java代码格式相匹配的示例。

我试图用Springdoc为Spring Boot控制器生成OpenAPI规范。我有一个具有多个路径变量的路径映射,方法签名接受一个命令对象(命令对象是由这些路径变量自动构造的)。swagger-ui.html似乎或多或少地起作用了,但是生成的JSON/YAML规范似乎并不有效。

@GetMapping("/myPath/{foo}/{bar}/{baz}")
public Mono<MyServiceResponse> doSomethingInteresting(@Valid DoSomethingInterestingCommand command) {
    return interestingService.doSomethingInteresting(command);
}
paths:
  '/myPath/{foo}/{bar}/{baz}':
    get:
      tags:
        - my-controller
      operationId: doSomethingInteresting
      parameters:
        - name: command
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/DoSomethingInterestingCommand'
Semantic error at paths./myPath/{foo}/{bar}/{baz}
Declared path parameter "foo" needs to be defined as a path parameter at either the path or operation level

为了使生成的规范格式良好,我应该做些什么?我也很好奇为什么swagger-ui.html页面似乎工作正常,但这并不重要。

共有1个答案

蒯慈
2023-03-14

要生成正确的openAPI规范,可以添加Swagger-Annotations。

@Parameter(in = ParameterIn.PATH, name ="foo" ,schema = @Schema(type = "string"))
@Parameter(in = ParameterIn.PATH, name ="bar" ,schema = @Schema(type = "string"))
@Parameter(in = ParameterIn.PATH, name ="baz" ,schema = @Schema(type = "string"))
@GetMapping("/myPath/{foo}/{bar}/{baz}")
public Mono<MyServiceResponse> doSomethingInteresting(@Valid @Parameter(hidden = true) DoSomethingInterestingCommand command) {
    return interestingService.doSomethingInteresting(command);
}
 类似资料:
  • 在dockerfile中,有相同的方法将copy命令与相对路径一起使用吗?我正在尝试使用: OBS。:我的结构文件夹(我在项目测试上运行dockerfile,另一个文件在项目控制台文件夹中)是: |-项目控制台 |-项目测试 Im收到以下错误: 错误:服务“app”无法生成:复制失败:未指定源文件。 我的目的是在同一个docker中有两个项目。我有一个dotnet核心控制台和另一个带有unity测

  • 问题内容: 我在jsp页面中有一个img标签,其中src路径要求传递标头参数来获取图像。我们如何实现呢? 问题答案: 首先,您需要发出一个设置头文件的ajax请求。然后,您需要使用一些HTML5 API将接收到的二进制数据转换为base64。最后,使用协议和base64数据设置映像src 。 资料来源: https://developer.mozilla.org/zh- CN/docs/Web/A

  • 问题内容: 我需要接受命令行参数才能以以下格式运行Go程序: 我正在使用。但是它只接受到‘1-‘。’> A’被跳过。 非常感谢您对解决此问题的任何帮助。 谢谢 问题答案: 您的外壳将IO 重定向解释为IO 重定向。Shell打开该文件作为命令的标准输出,并将参数传递给命令。 引用参数以避免这种情况:

  • 我有一个Java项目,它使用几个本机DLL,但只使用系统。load()加载其中一个,它依赖于其他的。我不允许修改那个代码。系统load()在java中显示。图书馆path,我可以通过命令行参数设置它,但根据Java JNI和Windows上的依赖库中的顶级答案,依赖DLL的加载是由Windows完成的,它只关心path,而不关心Java。图书馆路径所以我需要添加包含DLL到PATH的目录,通过命令

  • 如果长度较短,则该命令可以正常工作,但如果长度较长(即文件夹较多),则该命令不起作用。 如何在第二种情况下使用?

  • 问题内容: 我正在向数据库中插入大约500 000个对象,其中许多对象是相同的(数据库中具有相同的主键表示),但是其他字段可能不同,因此我使用的方法是“更新-如果没有受影响的行-插入”。问题在于,有时对象的某些字段设置为null(无法从文件读取),并且已经在数据库中设置了某些值,因此我将其更新为null =删除它。)如何实现方案,即只更新字段不为空? 这是我现在如何做的一个简单示例: 问题答案: