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
启动Tomcat时出现大量乱码的解决方法
Jun 21 Java/Android
简单总结SpringMVC拦截器的使用方法
Jun 28 Java/Android
Log4j.properties配置及其使用
Aug 02 Java/Android
mybatis中注解与xml配置的对应关系和对比分析
Aug 04 Java/Android
Java中CyclicBarrier和CountDownLatch的用法与区别
Aug 23 Java/Android
Java8中接口的新特性使用指南
Nov 01 Java/Android
Java字符串逆序方法详情
Mar 21 Java/Android
Java 超详细讲解hashCode方法
Apr 07 Java/Android
Java由浅入深通关抽象类与接口(上篇)
Apr 26 Java/Android
Spring Data JPA框架Repository自定义实现
Apr 28 Java/Android
mybatis 获取更新记录的id
May 20 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
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
python requests post多层字典的方法
2018/12/27 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
2019/08/29 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
python3 配置logging日志类的操作
2020/04/08 Python
基于Python绘制个人足迹地图
2020/06/01 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
某公司C#程序员面试题笔试题
2014/05/26 面试题
施工资料员岗位职责
2014/01/06 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
党的群众路线学习材料
2014/05/16 职场文书
责任胜于能力演讲稿
2014/05/20 职场文书
财务出纳岗位职责
2015/03/31 职场文书
罚款通知怎么写
2015/04/22 职场文书
教师旷工检讨书
2015/08/15 职场文书
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL