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 相关文章推荐
springboot利用redis、Redisson处理并发问题的操作
Jun 18 Java/Android
Java Optional<Foo>转换成List<Bar>的实例方法
Jun 20 Java/Android
java中重写父类方法加不加@Override详解
Jun 21 Java/Android
详细了解java监听器和过滤器
Jul 09 Java/Android
Java生成读取条形码和二维码的简单示例
Jul 09 Java/Android
Java设计模式之享元模式示例详解
Mar 03 Java/Android
Spring this调用当前类方法无法拦截的示例代码
Mar 20 Java/Android
mybatis-plus模糊查询指定字段
Apr 28 Java/Android
Java界面编程实现界面跳转
Jun 16 Java/Android
Android基础入门之dataBinding的简单使用教程
Jun 21 Java/Android
Java服务调用RestTemplate与HttpClient的使用详解
Jun 21 Java/Android
SpringBoot详解执行过程
Jul 15 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
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
PHP面向对象概念
2011/11/06 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
php上传大文件设置方法
2016/04/14 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
2017/02/10 PHP
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
用nodejs的实现原理和搭建服务器(动态)
2016/08/10 NodeJs
Angular2  NgModule 模块详解
2016/10/19 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
python logging模块的使用详解
2020/10/23 Python
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
奥巴马演讲稿
2014/01/08 职场文书
酒店员工检讨书
2014/02/18 职场文书
婚前财产公证书
2014/04/10 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
小学三年级作文之写景
2019/11/05 职场文书