Java集成swagger文档组件


Posted in Java/Android onJune 28, 2021

一:简介

  Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。

二:集成swagger

1.引入pom.xml文件包(导入4个jar包)

注意:jdk1.8以上才能运行swagger2

<!--swagger-->
	 <dependency>
	     <groupId>io.springfox</groupId>
	     <artifactId>springfox-swagger2</artifactId>
	     <version>2.8.0</version>
	 </dependency>
	 <!--swagger-ui-->
	 <dependency>
	     <groupId>io.springfox</groupId>
	     <artifactId>springfox-swagger-ui</artifactId>
	     <version>2.8.0</version>
	 </dependency>
	 <!--swagger-ui增强-->
	 <dependency>
	     <groupId>com.github.xiaoymin</groupId>
	     <artifactId>knife4j-spring-boot-starter</artifactId>
	     <version>2.0.4</version>
	 </dependency>
	 <!--swagger-xml bind-->
	 <dependency>
	     <groupId>javax.xml.bind</groupId>
	     <artifactId>jaxb-api</artifactId>
	     <version>2.3.0</version>
	 </dependency>

2.要想使用Swagger,必须编写一个配置类来配置 Swagger,这里的配置类如下

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    private String title = "标题..";
    private String description = "";
    private String termsOfServiceUrl = "";
    private String version = "版本号..";

    @Bean
    public Docket createDefaultRestApi() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any())
                .build().groupName("default").securitySchemes(securitySchemes()).securityContexts(securityContexts());
    }

    @Bean
    public Docket createTestRestApi() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.ant("/test/**")).build().groupName("测试/调试").securitySchemes(securitySchemes())
                .securityContexts(securityContexts());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title(title).description(description).termsOfServiceUrl(termsOfServiceUrl)
                .version(version).build();
    }

    private List<SecurityReference> defaultAuth() {
        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
        authorizationScopes[0] = authorizationScope;
        return newArrayList(new SecurityReference("token", authorizationScopes));
    }

    private List<SecurityContext> securityContexts() {
        return newArrayList(SecurityContext.builder().securityReferences(defaultAuth())
                .forPaths(PathSelectors.regex("^(?!auth).*$")).build());
    }

    private List<ApiKey> securitySchemes() {
        return newArrayList(new ApiKey("token", "token", "header"));
    }
}

3.集成RESTful风格接口示例

@Api(tags = "测试")
@RestController
public class TestController {

    @ApiOperation("get方法")
    @GetMapping("getInfo")
    public void getInfo(){
       
    }
}

4.控制台打印路径地址(可选配置

@Slf4j
@SpringBootApplication
public class SpringbootApplication implements ApplicationRunner {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }

    @Autowired
    Environment environment;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("项目已启动,端口:" + environment.getProperty("local.server.port"));
        log.info("swagger文档地址:http://localhost:" + environment.getProperty("local.server.port") + "/swagger-ui.html");
        log.info("swagger文档地址:http://localhost:" + environment.getProperty("local.server.port") + "/doc.html");
    }
}

三:配置运用swagger

1. http://ip:port/swagger-ui.html

Java集成swagger文档组件

2. http://ip:port/doc.html

Java集成swagger文档组件

到此这篇关于Java集成swagger文档组件的文章就介绍到这了,更多相关Java集成swagger内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
SpringBoot实现quartz定时任务可视化管理功能
Aug 30 Java/Android
使用springMVC所需要的pom配置
Sep 15 Java/Android
Spring-cloud Config Server的3种配置方式
Sep 25 Java/Android
Java tomcat手动配置servlet详解
Nov 27 Java/Android
关于Spring配置文件加载方式变化引发的异常详解
Jan 18 Java/Android
Java实现学生管理系统(IO版)
Feb 24 Java/Android
JAVA长虹键法之建造者Builder模式实现
Apr 10 Java/Android
SpringBoot 集成短信和邮件 以阿里云短信服务为例
Apr 22 Java/Android
Java实现注册登录跳转
Jun 16 Java/Android
Java中的Kotlin 内部类原理
Jun 16 Java/Android
利用Java连接Hadoop进行编程
Jun 28 Java/Android
volatile保证可见性及重排序方法
Aug 05 Java/Android
死磕 java同步系列之synchronized解析
Jun 28 #Java/Android
利用Java设置Word文本框中的文字旋转方向的实现方法
Springboot集成阿里云OSS上传文件系统教程
简单总结SpringMVC拦截器的使用方法
SpringBoot实现异步事件驱动的方法
Jun 28 #Java/Android
Spring整合Mybatis的全过程
Jun 28 #Java/Android
Java中常用解析工具jackson及fastjson的使用
You might like
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
javascript动态加载二
2012/08/22 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
JavaScript中Function详解
2015/02/27 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
react项目从新建到部署的实现示例
2021/02/19 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python日期操作学习笔记
2008/10/07 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
Python shutil模块用法实例分析
2019/10/02 Python
python类中super() 的使用解析
2019/12/19 Python
美国家居装饰和豪华家具购物网站:One Kings Lane
2018/12/24 全球购物
几个MySql的面试题
2013/04/22 面试题
几道Java和数据库的面试题
2013/05/30 面试题
生物化学研究助理员求职信
2013/10/09 职场文书
党员公开承诺书
2014/03/25 职场文书
婚前协议书怎么写
2014/04/15 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
会计做账心得体会
2016/01/22 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS