一、介绍Knife4j

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。
参考文档

swagger配置

二、基础搭建

1、pom依赖

    <io.swagger.version>1.5.21</io.swagger.version><swagger2.version>2.9.2</swagger2.version><knife4j.version>2.0.2</knife4j.version><!-- 引入 spring-boot -swagger 并生成优美的API文档 --><!-- swagger start --><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>${io.swagger.version}</version></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>${io.swagger.version}</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${swagger2.version}</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${swagger2.version}</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>${knife4j.version}</version></dependency><!-- swagger end -->

2、configuration

2.1、SwaggerProperties

@Data
@ConfigurationProperties(prefix = "swagger")
@Component
public class SwaggerProperties {/*** 是否启用*/private boolean enabled;/*** 标题*/private String title;/*** 文档描述*/private String description;/*** 项目路径*/private String termsOfServiceUrl;/*** 作者*/private String authorName;/*** 邮箱*/private String authorEmail;/*** 作者主页*/private String authorUrl;/*** 版本*/private String version;/*** web扫描的路径*/private String webBasePackage;/*** API扫描的路径*/private String apiBasePackage;
}

2.2、路径扫描配置InterceptorProperties

@Data
@ConfigurationProperties(prefix = "xiu-core.auth.interceptor")
@Component
public class InterceptorProperties {/*** 是否启用*/private boolean enable;/*** 包含的路径*/private String[] includePaths = new String[]{};/*** 排除路径*/private String[] excludePaths = new String[]{};
}

2.3、configuration配置SwaggerConfiguration

@Configuration
@EnableSwagger2
@EnableConfigurationProperties(value = SwaggerProperties.class)
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
@ConditionalOnProperty(value = {"swagger.enabled"}, matchIfMissing = true)
public class SwaggerConfiguration {@Bean(value = "restWeb")public Docket createRestWeb(SwaggerProperties swaggerProperties) {return new Docket(DocumentationType.SWAGGER_2).apiInfo(new ApiInfoBuilder().title(swaggerProperties.getTitle()).description(swaggerProperties.getDescription()).termsOfServiceUrl(swaggerProperties.getTermsOfServiceUrl()).contact(new Contact(swaggerProperties.getAuthorName(),swaggerProperties.getAuthorUrl(),swaggerProperties.getAuthorEmail())).version(swaggerProperties.getVersion()).build()).groupName("后台 Web").select().apis(RequestHandlerSelectors.basePackage(swaggerProperties.getWebBasePackage())).paths(PathSelectors.any()).build();}@Bean(value = "restApi")public Docket createRestApi(SwaggerProperties swaggerProperties) {return new Docket(DocumentationType.SWAGGER_2).apiInfo(new ApiInfoBuilder().title(swaggerProperties.getTitle()).description(swaggerProperties.getDescription()).termsOfServiceUrl(swaggerProperties.getTermsOfServiceUrl()).contact(new Contact(swaggerProperties.getAuthorName(),swaggerProperties.getAuthorUrl(),swaggerProperties.getAuthorEmail())).version(swaggerProperties.getVersion()).build()).groupName("前台 Api").select().apis(RequestHandlerSelectors.basePackage(swaggerProperties.getApiBasePackage())).paths(PathSelectors.any()).build();}
}

三、项目引用

3.1、配置项目属性

# Swagger配置
swagger:enabled: truetitle: 接口文档description: 描述termsOfServiceUrl: 地址authorName: Mr.xiuauthorEmail: xdy_0722@sina.cnauthorUrl: 地址version: 1.0.1webBasePackage: com.xiu.lawyer.web.controller.adminapiBasePackage: com.xiu.lawyer.web.controller.index# knife开源的swagger ui配置
knife4j:# 配置认证功能basic:# 是否开启认证enable: true# 用户名username: admin# 密码password: 123456

3.2、拦截器及资源配置

  /*** 拦截器配置** @param registry*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {//权限拦截器if (interceptorConfig.isEnable()) {registry.addInterceptor(authenticationInterceptor()).addPathPatterns(interceptorConfig.getIncludePaths()).excludePathPatterns(interceptorConfig.getExcludePaths());}}/*** 资源映射** @param registry*/@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {if (swaggerProperties.isEnabled()) {registry.addResourceHandler("doc.html","swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}}

四、页面展示


完!

基于丝袜哥的knife4j,您值得拥有!相关推荐

  1. java丝袜_丝袜哥 --- swagger的使用

    一.是什么? swagger,俗称丝袜哥,是用来生成接口文档的.没有使用swagger的时候,你写完后端接口,得自己将后端接口地址一个个地整理出来,告诉别人这个接口是干嘛的,要传哪些参数,正常情况下返 ...

  2. 基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程移植到自己做的板子上

    原程序是运行在小梅哥AC620开发板上的:基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程_ZLK1214的专栏-CSDN博客_小梅哥ac620[开发板]开发板型号:小梅哥AC620 ...

  3. Swagger(丝袜哥) 快速入门(超详细介绍)

    swagger(丝袜哥) Swagger是一个简单但功能强大的API表达工具.它具有地球上最大的API工具生态系统,数以千计的开发人员,使用几乎所有的现代编程语言,都在支持和使用Swagger.使用S ...

  4. 什么是RESTful,SpringBoot怎么引入丝袜哥(Swagger)

    前言 最近在开发自己的博客系统,前端采用vue+nuxt,后端采用SpringBoot作为整体架构,所以用到一些实战的技巧就打算顺便写写文章. 1.了解RESTful 做为一个网络应用开发人,都晓得我 ...

  5. 告别“丝袜哥”,推荐这几个在线文档生成神器

    点击"终码一生",关注,置顶公众号 每日技术干货,第一时间送达! 1.gitbook github地址:https://github.com/GitbookIO/gitbook 开 ...

  6. 基于小梅哥的Xlinx FPGA开发视频的布置作业--用串口控制一个24小时数字钟

    刚看完小梅哥的视频,花了几个钟头写成了作业,就两个功能,24小时计时和用串口设置时间.默认波特率为115200,上电开始从00:00:00计时,开发板是720,漏洞坑定有,还请各位指正.话不多说上代码 ...

  7. 还在用 Swagger(丝袜哥)生成接口文档?我推荐你试试它。。。

    作者:小鱼儿511 https://blog.csdn.net/dongbeiou/article/details/106771453 JApiDocs是一个无需额外注解.开箱即用的SpringBoo ...

  8. jstree中文api文档_还在用 Swagger(丝袜哥)生成接口文档?我推荐你试试它。。。...

    作者:小鱼儿511https://blog.csdn.net/dongbeiou/article/details/106771453JApiDocs是一个无需额外注解.开箱即用的SpringBoot接 ...

  9. 玩转 SpringBoot 2 快速整合 | 丝袜哥(Swagger)

    概述 首先让我引用 Swagger 官方的介绍: Design is the foundation of your API development. Swagger makes API design ...

最新文章

  1. spring三: 装配bean( 在xml中进行显式配置, 在java中进行显式配置)
  2. Allegro中元器件位号重排并反标回原理图
  3. nb信号和4g信号_NB-IoT的网络如何组成,以及数据如何传输?
  4. php删除数组中的空元素_PHP | 从数组中删除所有出现的元素
  5. nginx访问日志常用变量
  6. 《设计模式详解》行为型模式 - 观察者模式
  7. spring 包的依赖问题
  8. nginx keepalived vip 高可用
  9. Web 端使用融云 SDK 集成实现滑动加载历史消息
  10. imac 蓝牙机械键盘_最好的蓝牙机械键盘
  11. 联想小新锁屏壁纸怎么换_如何设置联想小新电脑锁屏时间
  12. 数码相机冲洗照片的数据
  13. JIEDU7种EMI电磁屏蔽材料介绍
  14. 卧槽,泪目了!二哥被读者的深情告白了感动哭了!!!!
  15. 没有你 万般精彩皆枉然
  16. Java 确定线程池中工作线程数的大小
  17. 一文了解2019年AI发展趋势,看完秒懂华为人工智能战略
  18. html实现给微信发红包看照片,微信发红包看图片效果实现
  19. 通过阿里云ECS服务器部署FRP实现Windows自带远程桌面
  20. 百度网盘不限速下载器

热门文章

  1. Django框架学习收藏
  2. 基于卷积神经网络和投票机制的三维模型分类与检索 2019 论文笔记
  3. java---implements
  4. Python 中文分词 NLPIR 快速搭建
  5. 古典概率,条件概率,全概率
  6. 黑盒测试方法—等价类划分法
  7. 如何开发一个企业级的 Go 应用?
  8. 标普500指数的恒定市值回测
  9. 从pcap文件中解析网络数据包
  10. 小白投资理财必看:图解基金买入与卖出规则