我们正在大张旗鼓地记录我们的JAX-RS API。通过使用swagger-jaxrs2
包,我们可以很好地创建api文档。
我们唯一要更改的是:默认的“ openapi” -Url。
通过注册Swaggers OpenApiResource类,我们的应用程序每次生成默认的"[host]/openapi"
端点。
我们能够创建自己的端点,该端点为openapi-spec服务,但是我们不能禁用此默认端点。
任何提示都是值得欢迎的!提前给你加油。
最佳答案
我们通过以下解决方法解决了:修改javax.ws.rs.core.Application
以仅加载我们自己提供的端点,而忽略任何其他3rdParty端点,例如swagger-jaxrs2 openapi
或openapi.{type:json|yaml}
@ApplicationPath("")
public class OurApplication extends javax.ws.rs.core.Application {
@Override
public Set<Class<?>> getClasses() {
// Start detecting only classes in your package! provided 3rdParty packages
// (like io.swagger.v3.jaxrs2.integration.resources) won't be provided
Reflections ourClasses = new Reflections("our.package.naming");
// Scan your classed for @javax.ws.rs.Path Annotaion. We need just collect
// API-Endpoints
Set<Class<?>> ourEndpoints = ourClasses.getTypesAnnotatedWith(Path.class);
// fyi - log the registered classes / endpoints
System.out.println("Providing "+ ourEndpoints);
// return endpoints to provide it in your application
return ourEndpoints;
}
}
提示:由于@ApplicationPath注释,因此无需修改web.xml。
我们使用的反射由maven提供:
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.12</version>
</dependency>
观看以获得更多关于反射包的信息。
我们没有找到更好的解决方案,但这对我们有用。好好享受。