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

Spring WebFlux OpenAPI-覆盖模型/模式字段名称

岳飞航
2023-03-14

我正在使用Spring Boot网络流量r2dbc来实现REST应用编程接口服务器。

为模型生成的模式正在复制具有不同定义(名称、限制等)的同一字段。

我的模型:

data class Extension(

    @Column("number")
    @JsonProperty("number", required = true)
    @Pattern(regexp = "^[0-9]{6,}\$")
    @Schema(description = "The number", example = "12345007100")
    val number: String,

    @Column("tenant_id")
    @JsonProperty("tenant_id", required = true)
    @Pattern(regexp = "^[0-9]{5}\$")
    @Schema(name = "tenant_id", description = "The ID of the Tenant", example = "12345")
    val tenantId: String,
)

路由器

@Bean
fun extensionsRoutes(): RouterFunction<ServerResponse> {
    return SpringdocRouteBuilder.route()
     .GET(
            path("/extensions").and(accept(MediaType.APPLICATION_JSON)),
            handler::getAll
        ) { ops ->
            ops
                .tag(tag)
                .operationId("operation id")
                .summary("summary")
                .description("description")
                .response(
                    responseBuilder()
                        .responseCode("200")
                        .description("The list of all Extensions")
                        .implementationArray(Extension::class.java)
                )
        }

为扩展模型生成的OpenAPI模式

Extension:
    required:
    - number
    type: object
    properties:
      number:
        pattern: "^[0-9]{6,}$"
        type: string
        description: The number
        example: "12345007100"
      tenant_id:
        pattern: "^[0-9]{5}$"
        type: string
        description: The ID of the Tenant to which the Extension belongs
        writeOnly: true
        example: "12345"
      tenantId:
        type: string

我有两个字段:tenant_id和tenantId,但这在模型中是同一个字段。还要注意,tenantId的定义忽略了模式属性(如required和pattern属性)。

我遗漏了一些注释?似乎我缺少了一些注释来指示springdoc库中的字段已经在定义中。

共有1个答案

法烨华
2023-03-14

终于发现了问题。我正在使用kotlin,我们需要添加以下依赖项:

<dependency>
   <groupId>org.springdoc</groupId>
   <artifactId>springdoc-openapi-kotlin</artifactId>
   <version>1.5.8</version>
</dependency>

这在https://www.baeldung.com/spring-rest-openapi-documentation有很好的记录,但我错过了。

 类似资料:
  • 我正在使用swagger ui,试图标准化API文档。我意识到,对于使用主体参数因而需要显示模型和模型模式的动词(GET、PUT、POST等),模式是在资源级别定义的(在pet store示例中为/pet或/store)。然而,在我们的API中,所需的主体参数将随着动词的变化而变化,最好为每个动词建立一个模型来准确反映这一点。 中模型定义的当前版本http://petstore.swagger.w

  • 问题内容: 假设我有一个继承自SuperFoo的模型Foo: 在Foo类中,我想重写SuperFoo的name字段的verbose_name。我可以吗?如果不是,最好的选择是在模型表单定义内设置标签以使其显示在模板中吗? 问题答案: 我使用的一个简单的技巧是:

  • 在网上搜索了几个小时后,我找到了一些关于如何在另一个模式中打开一个新模式的解决方案。但我的要求有点不同。我想使用一个有点“通用”的模态表单,它将在我的页面(不是整个应用程序,仅用于当前页面)中充当消息框。一旦调用/显示,此消息框将全部覆盖。 例如,我为我的数据输入打开一个模态表单,如果我想提示一条消息给用户,我会在数据输入表单上弹出另一个模态表单。 我是web编程的新手,所以我不知道我的代码哪里出

  • 问题内容: 在保存模型之前,我需要重新调整图片大小。但是,如何检查是否添加了新图片或仅更新了说明,以便每次保存模型时都可以跳过重新缩放? 我只想在加载新图像或更新图像时重新缩放,而在更新说明时不想要。 问题答案: 一些想法: 不确定是否可以在所有伪自动django工具中正常运行(例如:ModelForm,contrib.admin等)。

  • 问题内容: 保存模型之前,我需要重新调整图片大小。但是,如何检查是否添加了新图片或仅更新了说明,以便每次保存模型时都可以跳过重新缩放? 我只想在加载新图像或更新图像时重新缩放,而在描述更新时不想要。 问题答案: 一些想法: 不知道它是否可以在所有伪自动django工具中正常运行(例如:ModelForm,contrib.admin等)。

  • 问题内容: 我有一些看起来像这样的代码: 并且我想覆盖模型中字段的默认值,使其适用于该模型。 我已经浏览了一些相关的Django文档,并仔细查看了模型对象,但是我很难找到合适的位置进行此操作。有什么建议? 问题答案: 你实际上可以按照以下步骤进行操作: 我已经做了一两次。之所以有效,是因为Message上的字段与BaseMessage上的字段是不同的实例。但是,我怀疑是否建议使用它;-)它在很大程