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 相关文章推荐
spring项目中切面及AOP的使用方法
Jun 26 Java/Android
聊聊SpringBoot自动装配的魔力
Nov 17 Java/Android
使用HttpSessionListener监听器实战
Mar 17 Java/Android
Java实战之课程信息管理系统的实现
Apr 01 Java/Android
springboot入门 之profile设置方式
Apr 04 Java/Android
springboot用户数据修改的详细实现
Apr 06 Java/Android
零基础学java之带返回值的方法的定义和调用
Apr 10 Java/Android
零基础学java之带参数以及返回值的方法
Apr 10 Java/Android
Java 数组的使用
May 11 Java/Android
Android 中的类文件和类加载器详情
Jun 05 Java/Android
IDEA中sout快捷键无效问题的解决方法
Jul 23 Java/Android
Mybatis 一级缓存和二级缓存原理区别
Sep 23 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
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
Python2和Python3中print的用法示例总结
2017/10/25 Python
机器学习python实战之决策树
2017/11/01 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
python实现音乐下载器
2018/04/15 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
PyQt5 多窗口连接实例
2019/06/19 Python
python实现键盘输入的实操方法
2019/07/16 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
用python对oracle进行简单性能测试
2020/12/05 Python
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
少年闰土教学反思
2014/02/22 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
导游词之淮安明祖陵
2019/11/25 职场文书
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL