/swagger-resources/configuration/ui 404 错误

Posted

技术标签:

【中文标题】/swagger-resources/configuration/ui 404 错误【英文标题】:/swagger-resources/configuration/ui 404 error 【发布时间】:2018-06-11 20:43:39 【问题描述】:

我在基于 java spring 的应用程序中运行 springfox v2.7.0。我们在 web.xml 中配置了 3 个调度 serverlet:

1)常见的springmvc servlet [Active]

<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 [inactive]:通过在 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>

它工作正常,我可以从这里获得 swagger-resources: 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-resources: https://localhost:9002/mywebservices/swagger-resources

而且它们不可用。但它可以在https://localhost:9002/mywebservices/v2/swagger-resources 获得

我该如何解决这个问题,以便 swagger-ui.html : 我认为 Swagger-ui.html 应该在:https://localhost:9002/mywebservices/v2/swagger-ui.html 可用,以便 springfox.js 获得正确的 baseUrl。

https://localhost:9002/mywebservices/swagger-ui.html >>> 页面加载但弹出输入基本 URL

https://localhost:9002/mywebservices/swagger-resources/configuration/ui >>> 给出 404 因此弹出窗口出现

https://localhost:9002/mywebservices/webjars/springfox-swagger-ui/springfox.js >>> 可以访问。这工作正常。

请提出解决方案。 提前致谢。

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题。

解决方案是映射到您的应用程序的 MVC 配置,手动管理 swagger-common.jar 上存在的 swagger-resources 的映射的控制器。包值为“springfox.documentation.swagger.web”。根据您的应用,配置应该类似于下图所示:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages =  ApplicationPackages.REST_CONTROLLER_BASE_PACKAGE,
        "springfox.documentation.swagger.web" )
public class MvcConfig extends WebMvcConfigurerAdapter 


【讨论】:

这是唯一能让我运行我的 NON-spring-BOOT 项目和 Swagger-UI 的解决方案! 非常适合非spring-boot项目。 对我不起作用。我收到“没有可用的 'springfox.documentation.spring.web.DocumentationCache' 类型的合格 bean”错误。

以上是关于/swagger-resources/configuration/ui 404 错误的主要内容,如果未能解决你的问题,请参考以下文章