美文网首页管理后台系统我的技术体系
swagger-ui升级到knife4j,带给你新的体验

swagger-ui升级到knife4j,带给你新的体验

作者: 求索 | 来源:发表于2020-02-29 23:05 被阅读0次

    在前后端大行其道的时代,项目不引入swagger都out了。花了一下午把swagger集成到项目中,并定义了接口信息,然而UI界面看着很不爽,看着一定都不专业。

    api接口文档.png

    knife4j

    knife4j是springfox-swagger的增强UI实现,为Java开发者在使用Swagger的时候,能拥有一份简洁、强大的接口文档体验。

    简书浏览时看到一大牛介绍knife4j,觉得效果不错,决定把项目升级到knife4j。

    首先引入POM:

    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-spring-boot-starter</artifactId>
        <version>2.0.1</version>
        <exclusions>
            <exclusion>
                <groupId>io.springfox</groupId>
                <artifactId>*</artifactId>
            </exclusion>
            <exclusion>
                <groupId>io.swagger</groupId>
                <artifactId>*</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    这里排除io.springfox和io.swagger两个包主要时为了防止jar包依赖冲突,前面已经引用了swagger-starter。

    然后修改配置:

    @EnableSwagger2
    public class SwaggerConfig implements WebMvcConfigurer {
          // ... 这里省略 swagger api 基础配置信息
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
        }
    }
    

    可以看到修改配置的主要目的时添加新的静态资源,保证springmvc会到指定资源目录加载knife4j 的前端资源文件。

    最后将新增加的资源路径配置为可匿名访问,这里使用的是shiro安全框架,具体配置如下:

     chain.put("/doc.html", "anon");
     chain.put("/swagger-ui.html", "anon");
    

    最后验证下效果:

    knife4j接口文档.png

    虽然有点简单,但还是有点小成就。

    • 在测试时,knife4j测试结果不更新
    • 使用代理时最近了一级目录,首页地址正常,但是测试接口不能自动追加。

    相关文章

      网友评论

        本文标题:swagger-ui升级到knife4j,带给你新的体验

        本文链接:https://www.haomeiwen.com/subject/wllwhhtx.html