【发布时间】:2021-03-24 23:12:42
【问题描述】:
我已将我的 Jersey REST 服务文档升级到 swagger openapi v3。
现在我想介绍一种按用户授权过滤方法,以便在 swagger-ui/openapi.yaml 文档中只显示特定的 API 方法。 我最接近的是使用扩展 io.swagger.v3.core.filter.AbstractSpecFilter 的过滤器类 ApiAuthorizationFilterImpl。
public class ApiAuthorizationFilterImpl extends AbstractSpecFilter {
@Override
public Optional<Operation> filterOperation(
Operation operation,
ApiDescription api,
Map<String, List<String>> params,
Map<String, String> cookies,
Map<String, List<String>> headers) {
System.out.println("Operation filter is being executed");
return Optional.of(operation);
}
我已将球衣过滤器类中使用的过滤器添加到 web.xml 中。
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>io.swagger.v3.jaxrs2.integration.resources</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>com.mapchart.core.ws.swagger.ApiAuthorizationFilterImpl</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
之后似乎没有执行过滤器,我将其添加到 openapi.yaml 中,如 here 所述:
prettyPrint: true
cacheTTL: 0
filterClass: ApiAuthorizationFilterImpl
openAPI:
info:
version: '1.0.0'
title: 'OpenAPI documentation'
servers:
- url: '/my-rest-service'
由于这似乎也没有执行过滤器,我想知道实际上如何添加对 openapi 方法的过滤以显示在 openapi.yaml/swagger-ui 中(使用 AbstractSpecFilter 或其他方式)?
【问题讨论】:
标签: java jersey-2.0 openapi swagger-2.0