Knfie4j openapi3 基于Operation注解暴露接口
记录下只暴露被Operation注解修饰的接口的方法
maven 依赖
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
自定义类继承 OpenApiWebMvcResource 类,该类是knfei4j接口文档的控制器,重写 isMethodToFilter 方法,该方法判断接口是否显示
@Override
protected boolean isMethodToFilter(HandlerMethod handlerMethod) {
return handlerMethod.hasMethodAnnotation(Operation.class) && super.isMethodToFilter(handlerMethod);
}
效果
之前
之后
整个类代码:
import io.swagger.v3.oas.annotations.Operation;
import org.springdoc.core.*;
import org.springdoc.core.customizers.SpringDocCustomizers;
import org.springdoc.webmvc.api.OpenApiWebMvcResource;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.method.HandlerMethod;
/**
* 2023-12-12 21:56
*/
@RestController
public class OpenApiWebMvcResourceX extends OpenApiWebMvcResource {
public OpenApiWebMvcResourceX(ObjectFactory<OpenAPIService> openAPIBuilderObjectFactory, AbstractRequestService requestBuilder, GenericResponseService responseBuilder, OperationService operationParser, SpringDocConfigProperties springDocConfigProperties, SpringDocProviders springDocProviders, SpringDocCustomizers springDocCustomizers) {
super(openAPIBuilderObjectFactory, requestBuilder, responseBuilder, operationParser, springDocConfigProperties, springDocProviders, springDocCustomizers);
}
@Override
protected boolean isMethodToFilter(HandlerMethod handlerMethod) {
return handlerMethod.hasMethodAnnotation(Operation.class) && super.isMethodToFilter(handlerMethod);
}
}