详解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 相关文章推荐
总结一些Java常用的加密算法
Jun 11 Java/Android
手把手教你用SpringBoot将文件打包成zip存放或导出
Jun 11 Java/Android
JVM入门之类加载与字节码技术(类加载与类的加载器)
Jun 15 Java/Android
详解Java实践之抽象工厂模式
Jun 18 Java/Android
详解SpringBoot异常处理流程及原理
Jun 21 Java/Android
Java多条件判断场景中规则执行器的设计
Jun 26 Java/Android
spring项目中切面及AOP的使用方法
Jun 26 Java/Android
详解Java ES多节点任务的高效分发与收集实现
Jun 30 Java/Android
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
Jul 01 Java/Android
使用jpa之动态插入与修改(重写save)
Nov 23 Java/Android
Spring依赖注入多种类型数据的示例代码
Mar 31 Java/Android
阿里面试Nacos配置中心交互模型是push还是pull原理解析
Jul 23 Java/Android
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
java中重写父类方法加不加@Override详解
Jun 21 #Java/Android
Java并发编程之Executor接口的使用
深入理解以DEBUG方式线程的底层运行原理
浅谈什么是SpringBoot异常处理自动配置的原理
SpringAop日志找不到方法的处理
详解SpringBoot异常处理流程及原理
You might like
PHP+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
PHP扩展开发入门教程
2015/02/26 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
php-msf源码详解
2017/12/25 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
jquery动画1.加载指示器
2012/08/24 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
vue 中动态绑定class 和 style的方法代码详解
2018/06/01 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
[08:44]和酒神一起战斗 DOTA2教你做大人
2014/03/27 DOTA
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
pytorch多进程加速及代码优化方法
2019/08/19 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
Photobook澳大利亚:制作相片书,婚礼卡,旅行相簿
2017/01/12 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
酒店人事专员岗位职责
2013/12/19 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
天那边观后感
2015/06/09 职场文书
运动员代表致辞
2015/07/29 职场文书
Python数据分析入门之数据读取与存储
2021/05/13 Python
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL
进行数据处理的6个 Python 代码块分享
2022/04/06 Python
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android