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

Jersey JAX-RS,swagger-geting Swagger.json生成,但没有UI

薛征
2023-03-14

我在加载Swagger UI/启用UIendpoint时遇到了一个问题。Maven项目,Jersey版本-2.12,Swagger版本-1.5.1-m2

我有一个通过编程配置的jersey web应用程序。在我的ResourceConfig(扩展)中,我为Swagger设置了以下内容:

    beanConfig = new BeanConfig();
    beanConfig.setVersion("1.0.0");
    beanConfig.setHost("http:localhost:8080");
    beanConfig.setBasePath("/app/v1");
    beanConfig.setResourcePackage("com.app.features");
    beanConfig.setScan(true);
    

    register(beanConfig);

    register(new ApiListingResourceJSON());
    register(new SwaggerSerializers());
public class Bootstrap extends HttpServlet {

  @Override
  public void init(ServletConfig config) throws ServletException {
    Info info = new Info()
            .title("Swagger Sample App")
            .description("Desc")
            .termsOfService("http://helloreverb.com/terms/")
            .contact(new Contact()
                    .email("apiteam@swagger.io"))
            .license(new License()
                    .name("Apache 2.0")
                    .url("http://www.apache.org/licenses/LICENSE-2.0.html"));

    ServletContext context = config.getServletContext();
    Swagger swagger = new Swagger().info(info);
    context.setAttribute("swagger", swagger);
  }
}
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

  <servlet>
    <servlet-name>Bootstrap</servlet-name>
    <servlet-class>com.app.Bootstrap</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>

我已经将Swagger UI dist的内容复制到我的web应用程序文件夹中。

当我点击http://localhost:8080/app/v1/swagger.json上的api jsonendpoint时,我确实得到了json代码,例如:

{"swagger":"2.0","info":{"version":"1.0.0"},"host":"http:localhost:8080","basePath":"/app/v1"}

但是,我似乎没有在我期望的路径上看到昂首阔步的UI(http://localhost:8080/app/v1或http://localhost:8080/app/v1/app/v1/index.html)。

共有1个答案

曹渝
2023-03-14

您需要下载swagger-ui web project,并将其放在web目录中,然后在index.html中配置api地址,

index.html:

  <script type="text/javascript">
    $(function () {
      var url = window.location.search.match(/url=([^&]+)/);
      if (url && url.length > 1) {
        url = decodeURIComponent(url[1]);
      } else {
        url = "http://petstore.swagger.io/v2/swagger.json"; //your api address
      }
      window.swaggerUi = new SwaggerUi({
        url: url,

现在您可以通过访问http://ip:port/path/swagger-ui/index.html来访问swagger-ui

 类似资料:
  • 我使用Swagger生成了JAX-RS服务器代码,该代码使用以下命令运行: 现在,服务器的目的之一是在ElasticSearch中索引POST请求。但是,在pom中添加弹性搜索高级rest客户端会使服务器在启动时中断。请参阅底部的错误消息。 我还会在底部附上POM文件的内容。 底部附加的Maven依赖项树。 根据Joakim Erdfelt的建议,我尝试将javax-servlet更改为3.1版和

  • 我正在尝试使用 https://github.com/swagger-api/swagger-codegen 生成 nodejs 客户端 sdk 这是我使用的命令 但是对于我需要生成的实际sdk,swagger规范被拆分为两个不同的json文件,我想为两者创建一个sdk。我如何使用Swagger-codecen做到这一点,同时使用多个swagger json?

  • 我对JOOQ框架(3.13.4)以及Spring Boot和Java8有问题。 问题是我试图使用java代码方式生成域类(而不是使用带有maven的codegen插件,这在自定义命名策略提供程序方面遇到了一些麻烦)。因此,首先让我向您展示包含(至少我相信它包含)所有必要bean的@Configuration类: 可路由数据源是一种扩展抽象路由数据源的类型,因为在这种情况下,我需要有可能在运行时更改

  • 我使用硒网格(在4个浏览器上运行测试:FF13、FF16、IE9和chrome。每个浏览器都在不同的机器上。在测试的相关部分,我找到一个可点击的元素并单击它。在FF13、IE9和chrome上,它工作得很好:元素被找到并被点击。在FF16上,找到了该元素,并且webdrier“声称”它点击了它,但按钮的动作(改变页面上表格的布局)不会发生。 注意:我使用版本2.25谢谢,Tizki

  • 在我的Net 6 Web-API项目中,我使用了OData和Swagger(它是在项目创建时自动添加的)。 它可以开箱即用,但Swagger生成的一些URL存在问题。 这是我的OData控制器: SwaggerUI输出: 当我试图从Swagger运行通过Id获取实体的查询时,由于错误的url而失败。 由于某种原因,Swagger生成查询参数和URL,如上图所示。对于OData,URL必须是这样的(

  • 支持在项目中使用 Swagger 注解语法,运行命令,生成 Swagger 文件。 Swagger 是最流行的 API 开发工具,它遵循 OpenAPI Specification(OpenAPI 规范,也简称 OAS)。 Swagger 可以贯穿于整个 API 生态,如 API 的设计、编写 API 文档、测试和部署。 Swagger 是一种通用的,和编程语言无关的 API 描述规范。 imi-