我正在使用Camel集成Swagger。我下载了dist文件夹重命名为swagger并更新了index.html,但我无法通过我的应用程序端口访问它:http://localhost:$ {port} / $ {contextPath} /swagger/index.html
但如果我输入http://localhost:$ {port} / api-doc,我会得到swagger json转储。
如果转到该文件并使用浏览器手动打开它,我可以访问index.html。如何使用我的应用程序端口访问index.html?
http://localhost:$ {端口} / $ {的contextPath} /swagger/index.html
答案 0 :(得分:3)
您需要公开一个会返回index.html文件的端点。尝试将以下内容添加到RouteBuilder中:
rest("/swagger")
.produces("text/html")
.get("/index.html")
.responseMessage().code(200).message("Swagger UI").endResponseMessage()
.to("direct://get/swagger/ui/path");
from("direct://get/swagger/ui/path")
.routeId("SwaggerUI")
.setBody().simple("resource:classpath:/swagger/index.html");
第一个路由定义了一个接受GET请求并返回text / html的restful端点 /swagger/index.html 。
第二个路由使用Camel的Simple组件将实际的 index.html 读入Exchange邮件正文。
因此,如果您转到 localhost:$ {port} / $ {contextPath} /swagger/index.html ,它应该正确加载 index.html 文件。
请注意,在 indext.html 中,您需要替换将返回API的JSON转储的URL,以便Swagger UI可以呈现它。
答案 1 :(得分:0)
我使用Camel Jetty作为REST组件。对于jetty,您只需添加一个额外的ResourceHandler来处理SwaggerUI资源。下面使用Spring xml语言配置REST:
<restConfiguration component="jetty" host="{{rest_hostname}}" port="{{rest_listen_port}}"
bindingMode="off" apiContextPath="api-docs" apiContextListing="true"
enableCORS="true">
<!--ResourceHandler to handle Swagger UI contents on the jetty-->
<endpointProperty key="handlers" value="swaggerUIHandler"/>
......
......
</restConfiguration>
我在webjars提供的jar中使用swaggerUI。配置处理程序bean:
<bean id="swaggerUIHandler" class="com.yifanwu.examples.camel.JettyResourceHandlerFactory" factory-method="buildResourceHandler">
<!--your resource path is just "swagger" assuming it is on the classpath-->
<constructor-arg name="resourcePath" value="META-INF/resources/webjars"/>
</bean>
Bean工厂:
public class JettyResourceHandlerFactory {
public static ResourceHandler buildResourceHandler(String resourcePath) throws Exception {
ResourceHandler rh = new ResourceHandler();
rh.setResourceBase(JettyResourceHandlerFactory.class.getClassLoader()
.getResource(resourcePath)
.toURI().toString());
return rh;
}
}
完整示例:github