详解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 相关文章推荐
Springboot集成阿里云OSS上传文件系统教程
Jun 28 Java/Android
Java Kafka 消费积压监控的示例代码
Jul 01 Java/Android
Log4j.properties配置及其使用
Aug 02 Java/Android
spring cloud 配置中心native配置方式
Sep 25 Java/Android
深入解读Java三大集合之map list set的用法
Nov 11 Java/Android
你知道Java Spring的两种事务吗
Mar 16 Java/Android
RestTemplate如何通过HTTP Basic Auth认证示例说明
Mar 17 Java/Android
SpringBoot2零基础到精通之数据库专项精讲
Mar 22 Java/Android
Java工作中实用的代码优化技巧分享
Apr 21 Java/Android
Java中生成微信小程序太阳码的实现方案
Jun 01 Java/Android
详解Flutter自定义应用程序内键盘的实现方法
Jun 14 Java/Android
Java代码规范与质量检测插件SonarLint的使用
Aug 05 Java/Android
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
java中重写父类方法加不加@Override详解
Jun 21 #Java/Android
Java并发编程之Executor接口的使用
深入理解以DEBUG方式线程的底层运行原理
浅谈什么是SpringBoot异常处理自动配置的原理
SpringAop日志找不到方法的处理
详解SpringBoot异常处理流程及原理
You might like
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
onpropertypchange
2006/07/01 Javascript
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
js控制容器隐藏出现防止样式变化的两种方法
2014/04/25 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
经典c++面试题二
2015/08/14 面试题
土木工程师岗位职责
2013/11/24 职场文书
团员的自我评价
2013/12/01 职场文书
2014端午节活动策划方案
2014/01/27 职场文书
企业员工薪酬方案
2014/06/04 职场文书
趣味运动会口号
2015/12/24 职场文书
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python