Javascript Jersey 2:正确渲染Swagger静态内容,无尾随斜杠(/)

Javascript Jersey 2:正确渲染Swagger静态内容,无尾随斜杠(/),javascript,html,url,swagger,Javascript,Html,Url,Swagger,我所做的是使用Grizzly/Jersey来托管swagger ui,这是一种静态内容 下面是build.gradle的一部分: compile 'org.glassfish.jersey.core:jersey-server:2.22.1' compile 'org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.22.1' compile 'org.glassfish.jersey.containers:jersey-

我所做的是使用
Grizzly
/
Jersey
来托管
swagger ui
,这是一种静态内容

下面是build.gradle的一部分:

compile 'org.glassfish.jersey.core:jersey-server:2.22.1'
compile 'org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.22.1'
compile 'org.glassfish.jersey.containers:jersey-container-grizzly2-servlet:2.22.1'
以下是如何使用
Grizzly
配置静态内容:

httpServer = GrizzlyWebContainerFactory.create(uri);
httpServer.getServerConfiguration().addHttpHandler(new StaticHttpHandler("swagger-ui"), "/swagger");
swagger ui
是项目根文件夹下的文件夹

当我访问
http://localhost/swagger/
但是当我尝试
http://localhost/swagger
,它只提供了一个没有呈现的简单页面,似乎所有css/js文件都丢失了:

我想知道,让没有尾随斜杠(/)的url与有尾随斜杠的url相同的最佳方法是什么

更新: 我已经向swagger ui提出了一个问题:但它说这是
灰熊
的配置问题,所以
灰熊
的另一个问题是:


现在找不到解决方案。我正在考虑使用另一个web服务器。

我相信您要么想要映射到HTML文件swagger-ui.HTML,要么想要提供jar,您可以试试这个

更新:

问题在于灰熊路线。例如,如果您查看浏览器错误日志,您将看到它正在尝试从非加载

我找不到任何关于Grizzly如何进行路由的信息,而且似乎不一致。例如,加载index.html很好,但不加载位于同一路径上的swagger-ui.js。我使用过其他服务器,比如Nginx,来提供静态文件,但没有像我们这样的问题

一种解决方法是分别映射每个swagger ui文件夹,或者您可以通过使用,将swagger部署为单个JAR,正如我在评论中所说的那样。我还研究了使用通配符,但没有任何运气

    httpServer.getServerConfiguration().addHttpHandler(new StaticHttpHandler("<basepath>/lib"),"/lib");
    httpServer.getServerConfiguration().addHttpHandler(new StaticHttpHandler("<basepath>/css"),"/css");
...
httpServer.getServerConfiguration().addHttpHandler(新的StaticHttpHandler(“/lib”),“/lib”);
httpServer.getServerConfiguration().addHttpHandler(新的StaticHttpHandler(“/css”),“/css”);
...
我可以确认(正如alexey所评论的)这一点在最近版本的Grizzly中已经得到了修复

您可以将其添加到
pom.xml
或更新版本号

<dependency>
    <groupId>org.glassfish.grizzly</groupId>
    <artifactId>grizzly-http-server</artifactId>
    <version>2.3.28</version>
</dependency>

org.glassfish.grizzly
grizzly http服务器
2.3.28

Grizzly将自动返回一个301重定向,从url(不带尾随斜杠)重定向到带有尾随斜杠的url。

您能否详细说明如何映射到HTML文件swagger ui.HTML?您是否也托管了一个动态生成的swagger文档?例如,我们使用Springfox托管文档和swagger ui,Springfox负责将web服务器配置为托管swagger ui。请参见“是”,我将使用
swagger
导出我的restful api。但是对于swagger用户界面,我只使用从GuiHub下载的静态内容。你看过Springfox吗?除非您有其他要求,否则我会使用它部署Swagger UI。还没有,我不想将
Springfox
导入到我的项目中,因为已经有一个用于
Swagger
的web容器
Grizzly
。一切都很好,只是想让
/swagger
正常工作,因为
/swagger/
将在Grizzly 2.3.25中修复