我在基于java spring的应用程序中运行springfox v2.7.0。我们在web.xml中配置了3台分派服务器:
1)通用springmvc servlet活动
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/config/common/springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>`
2) springmvc-v1 servlet不活动:它是通过在web.xml中注释掉而不是在使用中而禁用的。
<servlet>
<servlet-name>springmvc-v1</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</init-param>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
com.test.mywebservices.v1.config.WebConfig
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
3)springmvc-v2 servlet [Active]: for this I am implimenting swagger.
<servlet>
<servlet-name>springmvc-v2</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</init-param>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
com.test.mywebservices.v2.config.WebConfig
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc-v2</servlet-name>
<url-pattern>/v2/*</url-pattern>
</servlet-mapping>
它工作得很好,我可以从这里获得一些很好的资源:https://localhost:9002/mywebservices/v2/swagger-resources。
我可以从这里查看api:https://localhost:9002/mywebservices/v2/v2/api-docs
从这里可以访问Swagger-UI:https://localhost:9002/mywebservices/swagger-ui.html
问题是,当我加载https://localhost:9002/mywebservices/swagger-ui.html页面时,它试图从这里访问swagger资源:https://localhost:9002/mywebservices/swagger-resources。
而且它们也没有。但是它可以在https://localhost:9002/mywebservices/v2/swagger-resources上使用。
如何解决这个问题,以便swagger-ui.html :我认为Swaggerui.html应该可以在:https://localhost:9002/mywebservices/v2/swagger-ui.html上使用,这样springfox.js就可以得到正确的baseUrl。
https://localhost:9002/mywebservices/swagger-ui.html >>>页面加载,但放弃弹出输入基>>>
https://localhost:9002/mywebservices/swagger-resources/configuration/ui >>>提供404,因此弹出窗口出现。
https://localhost:9002/mywebservices/webjars/springfox-swagger-ui/springfox.js >>>能够access.This工作得很好。
请提出解决办法。提前谢谢。
发布于 2018-10-03 00:07:11
我也面临着同样的问题。
解决方案是映射应用程序的MVC配置,由Controller手动管理swagger上存在的swagger资源的映射。包值为"springfox.documentation.swagger.web".根据应用程序的不同,配置应该类似于下面所示的配置:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { ApplicationPackages.REST_CONTROLLER_BASE_PACKAGE,
"springfox.documentation.swagger.web" })
public class MvcConfig extends WebMvcConfigurerAdapter {
}
https://stackoverflow.com/questions/48055963
复制相似问题