详解java如何集成swagger组件


Posted in Java/Android onJune 21, 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组件http://ip:port/doc.html
详解java如何集成swagger组件

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

Java/Android 相关文章推荐
Java并发编程之Executor接口的使用
Jun 21 Java/Android
详解java如何集成swagger组件
Jun 21 Java/Android
Java使用jmeter进行压力测试
Jul 09 Java/Android
JavaWeb 入门:Hello Servlet
Jul 16 Java/Android
spring cloud 配置中心客户端启动遇到的问题
Sep 25 Java/Android
关于maven依赖 ${xxx.version}报错问题
Jan 18 Java/Android
SpringBoot中获取profile的方法详解
Apr 08 Java/Android
零基础学java之循环语句的使用
Apr 10 Java/Android
JAVA长虹键法之建造者Builder模式实现
Apr 10 Java/Android
解决Springboot PostMapping无法获取数据的问题
May 06 Java/Android
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
Jul 15 Java/Android
java获取一个文本文件的编码(格式)信息
Sep 23 Java/Android
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
java中重写父类方法加不加@Override详解
Jun 21 #Java/Android
Java并发编程之Executor接口的使用
深入理解以DEBUG方式线程的底层运行原理
浅谈什么是SpringBoot异常处理自动配置的原理
SpringAop日志找不到方法的处理
详解SpringBoot异常处理流程及原理
You might like
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
main.php
2006/12/09 PHP
dedecms模板标签代码官方参考
2007/03/17 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
php经典趣味算法实例代码
2020/01/21 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
js 判断 enter 事件
2009/02/12 Javascript
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
基于jQuery的倒计时插件代码
2011/05/07 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
2011/11/14 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
Python作用域与名字空间原理详解
2020/03/21 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
Python函数参数分类原理详解
2020/05/28 Python
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
学校法制宣传月活动总结
2014/07/03 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
国际贸易实训报告
2014/11/05 职场文书
工人先进事迹材料
2014/12/26 职场文书
企业工会工作总结2015
2015/05/13 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
七个非常实用的Python工具包总结
2021/06/15 Python
vue递归实现树形组件
2022/07/15 Vue.js