springdoc-openapi 通用控制器类型参数支持
springdoc-openapi generic controller type parameters support
我有以下控制器代码:
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+name。
实际:
{
"id": 0,
}
预计:
{
"id": 0,
"name": "string",
}
鉴于我有 40 多个特定的控制器,有什么方法可以让 springdoc open-api 根据特定的通用参数生成正确的标记?
支持现在是 springdoc-openapi v1.2.33 的一部分。
例如,如果你使用的是spring-mvc,你可以声明:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.2.33</version>
</dependency>
我有以下控制器代码:
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+name。
实际:
{
"id": 0,
}
预计:
{
"id": 0,
"name": "string",
}
鉴于我有 40 多个特定的控制器,有什么方法可以让 springdoc open-api 根据特定的通用参数生成正确的标记?
支持现在是 springdoc-openapi v1.2.33 的一部分。 例如,如果你使用的是spring-mvc,你可以声明:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.2.33</version>
</dependency>