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 相关文章推荐
JVM入门之类加载与字节码技术(类加载与类的加载器)
Jun 15 Java/Android
分析Java中Map的遍历性能问题
Jun 26 Java/Android
新手初学Java网络编程
Jul 07 Java/Android
Netty分布式客户端处理接入事件handle源码解析
Mar 25 Java/Android
Dubbo+zookeeper搭配分布式服务的过程详解
Apr 03 Java/Android
详解Flutter和Dart取消Future的三种方法
Apr 07 Java/Android
SpringBoot 集成短信和邮件 以阿里云短信服务为例
Apr 22 Java/Android
Qt数据库应用之实现图片转pdf
Jun 01 Java/Android
Android RecyclerView实现九宫格效果
Jun 28 Java/Android
java.util.NoSuchElementException原因及两种解决方法
Jun 28 Java/Android
maven 解包依赖项中的文件的解决方法
Jul 15 Java/Android
基于Android10渲染Surface的创建过程
Aug 14 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
长波知识介绍
2021/03/01 无线电
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
如何利用http协议发布博客园博文评论
2015/08/03 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
javascript数组组合成字符串的脚本
2021/01/06 Javascript
xml转json的js代码
2012/08/28 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
Jquery注册事件实现方法
2015/05/18 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
django 创建过滤器的实例详解
2017/08/14 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
Windows下安装Scrapy
2018/10/17 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
Python跳出多重循环的方法示例
2019/07/03 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
Python3如何使用tabulate打印数据
2020/09/25 Python
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
速比涛英国官网:Speedo英国
2019/07/15 全球购物
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
财务部副经理岗位职责范本
2014/06/17 职场文书
项目合作协议书
2014/09/23 职场文书
导游词之江西赣州
2019/10/15 职场文书
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python
gojs实现蚂蚁线动画效果
2022/02/18 Javascript
mysql 获取相邻数据项
2022/05/11 MySQL