如何在我的应用根目录下显示 swagger-ui?
How to show the swagger-ui at my app root?
在我的 spring 启动应用程序中,每当我导航到 http://localhost:8080/myapp/
.
时,我都希望看到 swagger-ui
我启用了 swagger 并使用此配置将 /
重定向到 swagger-ui.html
:
@Configuration
@EnableSwagger2
public class Swagger2Config implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("forward:/swagger-ui.html");
}
}
但是,这使我的浏览器记录此 JavaScript-Exception:
springfox.js?v=2.9.2:1 Uncaught (in promise) TypeError: Cannot read property '1' of null
at e (springfox.js?v=2.9.2:1)
at springfox.js?v=2.9.2:1
at x (springfox.js?v=2.9.2:1)
at Generator._invoke (springfox.js?v=2.9.2:1)
at Generator.t.(:8080/myapp/anonymous function) [as next] (http://localhost:8080/myapp/webjars/springfox-swagger-ui/springfox.js?v=2.9.2:1:50487)
at e (springfox.js?v=2.9.2:1)
at springfox.js?v=2.9.2:1
at new Promise (<anonymous>)
at springfox.js?v=2.9.2:1
at window.onload (springfox.js?v=2.9.2:1)
e @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
x @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
t.(anonymous function) @ springfox.js?v=2.9.2:1
e @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
window.onload @ springfox.js?v=2.9.2:1
load (async)
(anonymous) @ springfox.js?v=2.9.2:1
r @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
r @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
堆栈跟踪的第一项指向 http://localhost:8080/myapp/webjars/springfox-swagger-ui/springfox.js?v=2.9.2
中的这一行:
return/(.*)\/swagger-ui.html.*/.exec(window.location.href)[1]
当我打开应用程序的根目录时,如何让我的 swagger api 文档出现?
我使用的依赖项:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
您可以通过此更改重定向请求:
registry.addViewController("/").setViewName("redirect:/swagger-ui.html");
// ^-- "redirect" instead of "forward"
如果用户现在导航到 http://localhost:8080/myapp/
,他将被重定向到 http://localhost:8080/myapp/swagger-ui.html
。
从 swagger
重定向到 swagger-ui
将解决这个问题,
//Do redirection inside controller
@RequestMapping("/swagger")
public String greeting() {
return "redirect:/swagger-ui.html";
}
你也可以尝试在 main 方法中添加 bean,
@Bean
RouterFunction<ServerResponse> routerFunction() {
return route(GET("/swagger"), req ->
ServerResponse.temporaryRedirect(URI.create("swagger-ui.html")).build());
}
在我的 spring 启动应用程序中,每当我导航到 http://localhost:8080/myapp/
.
我启用了 swagger 并使用此配置将 /
重定向到 swagger-ui.html
:
@Configuration
@EnableSwagger2
public class Swagger2Config implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("forward:/swagger-ui.html");
}
}
但是,这使我的浏览器记录此 JavaScript-Exception:
springfox.js?v=2.9.2:1 Uncaught (in promise) TypeError: Cannot read property '1' of null
at e (springfox.js?v=2.9.2:1)
at springfox.js?v=2.9.2:1
at x (springfox.js?v=2.9.2:1)
at Generator._invoke (springfox.js?v=2.9.2:1)
at Generator.t.(:8080/myapp/anonymous function) [as next] (http://localhost:8080/myapp/webjars/springfox-swagger-ui/springfox.js?v=2.9.2:1:50487)
at e (springfox.js?v=2.9.2:1)
at springfox.js?v=2.9.2:1
at new Promise (<anonymous>)
at springfox.js?v=2.9.2:1
at window.onload (springfox.js?v=2.9.2:1)
e @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
x @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
t.(anonymous function) @ springfox.js?v=2.9.2:1
e @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
window.onload @ springfox.js?v=2.9.2:1
load (async)
(anonymous) @ springfox.js?v=2.9.2:1
r @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
r @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
(anonymous) @ springfox.js?v=2.9.2:1
堆栈跟踪的第一项指向 http://localhost:8080/myapp/webjars/springfox-swagger-ui/springfox.js?v=2.9.2
中的这一行:
return/(.*)\/swagger-ui.html.*/.exec(window.location.href)[1]
当我打开应用程序的根目录时,如何让我的 swagger api 文档出现?
我使用的依赖项:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
您可以通过此更改重定向请求:
registry.addViewController("/").setViewName("redirect:/swagger-ui.html");
// ^-- "redirect" instead of "forward"
如果用户现在导航到 http://localhost:8080/myapp/
,他将被重定向到 http://localhost:8080/myapp/swagger-ui.html
。
从 swagger
重定向到 swagger-ui
将解决这个问题,
//Do redirection inside controller
@RequestMapping("/swagger")
public String greeting() {
return "redirect:/swagger-ui.html";
}
你也可以尝试在 main 方法中添加 bean,
@Bean
RouterFunction<ServerResponse> routerFunction() {
return route(GET("/swagger"), req ->
ServerResponse.temporaryRedirect(URI.create("swagger-ui.html")).build());
}