0

我在springboot中有休息服务并使用springdoc-openapi,我所有的端点都使用同一个类响应,如下所示:

public class ListResponse {
private List<?> list;
private Integer statusHttp;}

在“列表”字段中,我添加了一个不同的bean列表,问题是当我使用springdocs生成yaml定义时,它只为所有端点生成以下模式:

ListResponse:
  type: object
  properties:
    lista:
      type: array
      items:
        type: object
    statusHttp:
      type: integer
      format: int32

任何人都知道如何使用我的 ListResponse 类为端点生成自定义模式,或者我应该为每个具有不同字段“list”的端点生成一个类吗?

4

1 回答 1

0

您可以使用 OperationCustimizer,您可以在其中访问 ApiResponse Schema。

这是一个适应的示例代码,供您输入:

    @Bean
    public OperationCustomizer convertOperationsToString() {​
        (Operation operation, HandlerMethod handlerMethod) -> {
​
            if (handlerMethod.getReturnType().getParameterType().isAssignableFrom(Duration.class)) {
                for (Map.Entry<String, io.swagger.v3.oas.models.responses.ApiResponse> entry:  operation.getResponses().entrySet()) {
                    io.swagger.v3.oas.models.responses.ApiResponse response = entry.getValue();
                    Content content = response.getContent();
                    if (content.containsKey(MediaType.APPLICATION_JSON_VALUE)) {
                        Schema schema = content.get(MediaType.APPLICATION_JSON_VALUE).getSchema();
                        schema.getProperties().clear();
                        schema.setType("string");
                    }
                }
            }
            return operation;
        };
    }
于 2020-08-13T16:59:47.733 回答