当前位置: 首页 > 知识库问答 >
问题:

Swagger UI与Camel集成。。。无法访问索引。端口上的html

寿亦
2023-03-14

我下载的dist文件夹重命名为swagger并更新index.html但我无法通过我的应用程序端口访问用户界面:http://localhost:${port}/${contextPath}/swagger/index.html

但如果我打字http://localhost:${port}/api doc,我得到了swagger-json转储。

我可以访问索引。html,如果转到该文件并使用浏览器手动打开它。如何访问索引。html使用我的应用程序端口?

http://localhost:${port}/${contextPath}/swagger/index。html

共有3个答案

简烨烁
2023-03-14

一个更简单的解决方案是添加一个web.xml文件,将资源移动到 /webapp目录,在web.xml中添加以下过滤器

<filter>
  <filter-name>RestSwaggerCorsFilter</filter-name>
  <filter-class>org.apache.camel.swagger.servlet.RestSwaggerCorsFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>RestSwaggerCorsFilter</filter-name>
  <url-pattern>/api-docs/*</url-pattern>
  <url-pattern>/rest/*</url-pattern> 
</filter-mapping>

有关详细信息,请参阅驼峰招摇文档:http://camel.apache.org/swagger-java.html

简学文
2023-03-14

我使用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>

豆子工厂:

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

范承志
2023-03-14

您需要公开一个将返回index.html文件的endpoint。尝试将以下内容添加到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的restfulendpoint /swagger/index.html。

第二条路由使用Camel的简单组件读取实际索引。将html导入Exchange邮件正文。

因此,如果您转到localhost:${port}/${contextPath}/swagger/index。html,它应该加载索引。html文件正确。

请注意,inside Index。html您需要替换将返回API的JSON转储的URL,以便Swagger UI可以呈现它。

 类似资料:
  • 内网搭建后 加入端口访问 不可行吗 公司要求必须加入端口访问内网,然而现在目前再用的网站做迁移的时候发现很多端口 我批量开启后 测试无法访问 路由器映射 已经完成 公司用的专线 有动态公网地址 外网中可以访问面板地址也可以正常操作 唯独部署的 项目端口无法访问 ng的80端口 没动 创建的空间端口 8080 1070 这种 也无法访问 折腾不来

  • 我无法访问内部运行 ASP.NET Core 3.1 应用程序的容器。目标是在端口 5000 上的容器中运行应用程序。当我使用标准VS配置文件在本地运行它时,我导航到 http://localhost:5000/swagger/index.html 以加载swaggerUI。我想使用泊坞窗实现同样的事情。 复制我的问题的步骤: > 添加具有暴露的5000端口和ENV ASPNETCORE_url变

  • 我试图测试camel与kafka的集成,如这里所述 以下是我的代码 然而,我得到了以下错误 请提出可能遗漏的内容。

  • 我正在从事一个使用Apache Camel和Elasticsearch的项目,我想知道Camel支持哪个版本的Elasticsearch? 我的pom.xml是这样的: 但是当我想将文件路由到elasticsearch时,我遇到了以下错误: Java语言lang.IllegalStateException:收到来自不受支持版本的消息:[2.0.0]最小兼容版本为:[5.0.0] 我发现这个异常是由

  • 我是一个码头工人,我在前几天阅读了如何使用它的官方教程。我决定将我非常简单的spring-boot应用程序作为服务部署到集群中,但我无法从外部访问它。顺便说一下,当我用docker run启动docker时,容器是可以访问的。 所以我的春靴tomcat正在收听8081。 Dockerfile: docker-compose.yml: 我部署了两个服务,一个可视化程序和一个Spring引导应用程序。

  • dockerfile: docker撰写文件: 应用程序属性文件: 当我运行docker-comush up时,它将创建一个数据库容器和一个连接到数据库容器的应用程序容器。 但是spring应用程序容器在启动过程中遇到了一些错误: org.postgresql.util.PSQL异常:连接到localhost:5432被拒绝。检查主机名和端口是否正确,邮政局长是否接受TCP/IP连接。 显示数据库