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 14 Java/Android
Java elasticsearch安装以及部署教程
Jun 28 Java/Android
Java Spring 控制反转(IOC)容器详解
Oct 05 Java/Android
使用jpa之动态插入与修改(重写save)
Nov 23 Java/Android
Mybatis是这样防止sql注入的
Dec 06 Java/Android
springboot中的pom文件 project报错问题
Jan 18 Java/Android
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
Mar 21 Java/Android
Java 多线程协作作业之信号同步
May 11 Java/Android
Android studio 简单计算器的编写
May 20 Java/Android
Java实现简单小画板
Jun 10 Java/Android
springboot实现string转json json里面带数组
Jun 16 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购物车实现方法
2015/01/03 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
实例讲解JavaScript中instanceof运算符的用法
2016/06/08 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
python获取糗百图片代码实例
2013/12/18 Python
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
python如何获取服务器硬件信息
2017/05/11 Python
Python 查看文件的编码格式方法
2017/12/21 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
django项目登录中使用图片验证码的实现方法
2019/08/15 Python
python多线程同步之文件读写控制
2021/02/25 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
服装设计专业自荐书范文
2013/12/30 职场文书
幼儿园校车司机的岗位职责
2014/01/30 职场文书
中学生打架检讨书
2014/02/10 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
小学节能减排倡议书
2014/05/15 职场文书
机关作风建设心得体会
2014/10/22 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
红色故事汇观后感
2015/06/18 职场文书
高一语文教学反思
2016/02/16 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS
python中mongodb包操作数据库
2022/04/19 Python