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

springdoc-openapi通用控制器类型参数支持

鱼锦
2023-03-14

我有以下控制器代码

    public abstract class BaseController<TClientModel extents BaseClientModel> {
       @Operation
       @GetMapping
       Page<TClientModel> get()
    }

    @Data
    public abstract class BaseClientModel {
       int id;
    }

    @RestController
    public class SpecificController extends BaseController<SpecificClientModel> {}

    @Data
    public class SpecificClientModel extends BaseClientModel {
        String name;
    }

问题:在Swagger中为SpecificController生成open api标记时,响应中的客户端模型是BaseClientModel,而不是SpecificClientModel,并且只有id字段,而没有id名称。

实际:

{
  "id": 0,
}

预期:

{
  "id": 0,
  "name": "string",
}

如果我有40个特定的控制器,有没有办法让springdoc开放api根据特定的通用参数生成正确的标记?

共有1个答案

韦晟睿
2023-03-14

支持现在是v1的一部分。springdoc openapi的2.33。例如,如果您使用的是spring mvc,则可以声明:

   <dependency>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-ui</artifactId>
      <version>1.2.33</version>
   </dependency>
 类似资料:
  • OpenAPI3.0规范规定,没有任何类型的模式将匹配任何数据类型。 没有类型的模式匹配任何数据类型--数字、字符串、对象等等。 因此,对此进行建模的正确方法是下面的Swagger定义,其中没有属性: 但是,每个开放问题Swagger-core#3834,Java值都映射到OpenAPI类型,而不是任意类型。如上所述,这意味着这样的API返回或接受不是OpenAPI的类型是不正确的,例如、、等。

  • springdoc-openapi库自动标记生成的OpenAPI文档中所需的某些属性。例如,注释为的属性将包括在生成的YAML文件中所需的属性列表中。 库不做的一件事是将可选属性标记为。但是,默认情况下,Spring Boot应用程序将在请求中接受,并在可选属性的响应中返回。这意味着OpenAPI文档和endpoint行为之间存在差异。 在SpringDoc-OpenAPI生成的OpenAPI文档

  • 当使用与SpringDoc-OpenAPI捆绑的CSRF头时,是否有一种方法可以自动地将CSRF头包含到从swagger ui发出的请求中? springfox(GitHub)中似乎实现了类似的解决方案,但我没有找到关于是否可以用SpringDoc-OpenAPI实现这一点的信息。

  • 对于hidden=true,我希望这个参数在swagger-UI中不可见。但确实是。是我误解了这个参数,还是它没有做它应该做的事情? 我希望这个参数在api-docs中,生成能够使用这个参数的客户机,但我希望它在swagger-ui中是不可见的

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

  • 我有一个简单的Spring控制器。 当我在查询字符串中传递a=1时,它工作正常。 但是当我通过a=abc时,它给了我这个。 有没有办法让我可以处理这个错误并回复给用户,就像必须是数字一样。 提前感谢。