Swagger在线文档之knife4j实战讲解

Easter79
• 阅读 579

一、背景

       目前Swagger在线文档官方的UI页面美感、操作舒适度难以满足开发、测试等相关人员;经过调研后,发现了knife4j这款文档插件非常漂亮,且插件社区成熟度也相对比较高,博主在此为各位小伙伴作个分享。

二、knife4j简介

knife4j是一个通过基于Swagger二次开发来增强Swagger UI以及其它一些用户急需功能的一个在线文档解决方案;它支持自定义文档[.md],以及对接口功能进行分组和排序等新特性**[由于新特性比较多,这里就不一一列举]**;

三、knife4j使用[springboot]

1.pom.xml添加
<dependency>
   <groupId>com.github.xiaoymin</groupId>
   <artifactId>knife4j-spring-boot-starter</artifactId>
   <!--在引用时请在maven中央仓库搜索最新版本号-->
   <version>2.0.2</version>
</dependency>


knife4j配置:

@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfig {
    /**
     * 是否开启swagger,正式环境一般是需要关闭
     */
    @Value("${swagger.enabled}")
    private boolean enableSwagger;

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2).enable(enableSwagger).pathMapping("/").select()
            .apis(RequestHandlerSelectors.basePackage("com.xxx.xxx.*.controller"))
            .paths(PathSelectors.any()).build().apiInfo(apiInfo()).groupName("XXX服务-开放平台接口");
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
            // 设置文档标题(API名称)
            .title("XXX中心服务接口")
            // 文档描述
            .description("XXX服务接口文档说明......")
            // 服务条款URL
            .termsOfServiceUrl("http://XXX.XXX.XXX.XXX:8080/XXX")
            // 联系信息
            .contact(new Contact("em_aaron", "", ""))
            // 版本号
            .version("1.0.0").build();
    }
}


@Configuration
public class WebConfig implements WebMvcConfigurer {
    public static final String META_INF_RESOURCES = "classpath:/META-INF/resources/";
    ImmutableMap<String,
        String> webResourceMap = new ImmutableMap.Builder<String, String>().put("doc.html", META_INF_RESOURCES)
            .put("/webjars/**", "classpath:/META-INF/resources/webjars/").put("/service-worker.js", META_INF_RESOURCES)
            .put("/precache-manifest.*.js", META_INF_RESOURCES).build();

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        ImmutableSet<Map.Entry<String, String>> webResourceSet = webResourceMap.entrySet();
        webResourceSet.forEach(x -> registry.addResourceHandler(x.getKey()).addResourceLocations(x.getValue()));
    }
}

@Api(tags = "xxx接口API")
@ApiSort(2)
@RestController
@RequestMapping("/xxx")
public class xxxController {
    @ApiOperation(value = "验证接口", notes = "验证处理")
    @ApiOperationSupport(order = 1)
    @ResponseBody
    @RequestMapping(value = "/verify", method = {RequestMethod.POST}, consumes = 
        MediaType.APPLICATION_JSON_VALUE,
        produces = {"application/json; charset=UTF-8"})
    @SuppressWarnings(value = {"rawtypes"})
    public BaseResponse verify(@Validated @RequestBody Rq rq) {
        ....
        return BaseResponse.success();
    }
    .....

}

application.properties配置


#knife4j配置
knife4j.basic.enable=true
knife4j.basic.username=admin
knife4j.basic.password=123456
knife4j.markdowns=classpath:markdown/*

MD编写

Swagger在线文档之knife4j实战讲解

四、knife4j使用效果

Swagger在线文档之knife4j实战讲解

Swagger在线文档之knife4j实战讲解

Swagger在线文档之knife4j实战讲解

最后寄语,以上是博主本次文章的全部内容,如果大家觉得博主的文章还不错,请点赞;如果您对博主其它服务器大数据技术或者博主本人感兴趣,请关注博主博客,并且欢迎随时跟博主沟通交流。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
2年前
swagger
如果项目已经集成了swagger,只需要在pom.xml添加,如果你的项目没有集成swagger,自行百度或看最下方的链接swaggerbootstrapui是Swagger的前端UI实现,目的是替换Swagger默认的UI实现SwaggerUI,使文档更友好一点儿....swaggerbootstrapui 只是Swagger的UI实现,
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k