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 相关文章推荐
总结一些Java常用的加密算法
Jun 11 Java/Android
分析Netty直接内存原理及应用
Jun 14 Java/Android
详解Java实践之适配器模式
Jun 18 Java/Android
springboot临时文件存储目录配置方式
Jul 01 Java/Android
SpringBoot工程下使用OpenFeign的坑及解决
Jul 02 Java/Android
java解析XML详解
Jul 09 Java/Android
深入解读Java三大集合之map list set的用法
Nov 11 Java/Android
mapstruct的用法之qualifiedByName示例详解
Apr 06 Java/Android
Android在Sqlite3中的应用及多线程使用数据库的建议
Apr 24 Java/Android
JavaScript正则表达式实现注册信息校验功能
May 30 Java/Android
Spring JPA 增加字段执行异常问题及解决
Jun 10 Java/Android
SpringBoot详解整合Redis缓存方法
Jul 15 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
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
php支付宝APP支付功能
2020/07/29 PHP
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
关于jquery input textare 事件绑定及用法学习
2013/04/03 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
树结构之JavaScript
2017/01/24 Javascript
js随机生成一个验证码
2017/06/01 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
python中去空格函数的用法
2014/08/21 Python
Python功能键的读取方法
2015/05/28 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
python tkinter canvas使用实例
2019/11/04 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
使用Html5中的cavas画一面国旗
2019/09/25 HTML / CSS
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
《骆驼和羊》教学反思
2014/02/27 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers
angular4实现带搜索的下拉框
2022/03/25 Javascript
python图像处理 PIL Image操作实例
2022/04/09 Python