详解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 相关文章推荐
Spring Boot 启动、停止、重启、状态脚本
Jun 26 Java/Android
Springboot集成阿里云OSS上传文件系统教程
Jun 28 Java/Android
springboot项目以jar包运行的操作方法
Jun 30 Java/Android
springboot 启动如何排除某些bean的注入
Aug 02 Java/Android
spring cloud 配置中心客户端启动遇到的问题
Sep 25 Java/Android
Java设计模式之享元模式示例详解
Mar 03 Java/Android
Netty分布式客户端处理接入事件handle源码解析
Mar 25 Java/Android
Spring事务管理下synchronized锁失效问题的解决方法
Mar 31 Java/Android
Android Flutter实现3D动画效果示例详解
Apr 07 Java/Android
Android开发EditText禁止输入监听及InputFilter字符过滤
Jun 10 Java/Android
SpringBoot深入分析讲解监听器模式下
Jul 15 Java/Android
Springboot集成kafka高级应用实战分享
Aug 14 Java/Android
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
java中重写父类方法加不加@Override详解
Jun 21 #Java/Android
Java并发编程之Executor接口的使用
深入理解以DEBUG方式线程的底层运行原理
浅谈什么是SpringBoot异常处理自动配置的原理
SpringAop日志找不到方法的处理
详解SpringBoot异常处理流程及原理
You might like
php 文件上传实例代码
2012/04/19 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
jQuery 1.0.2
2006/10/11 Javascript
javascript里的条件判断
2007/02/27 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
vue - vue.config.js中devServer配置方式
2019/10/30 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
Python strip lstrip rstrip使用方法
2008/09/06 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
使用python模拟命令行终端的示例
2019/08/13 Python
python中的itertools的使用详解
2020/01/13 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
事业单位接收函
2014/01/10 职场文书
丑小鸭教学反思
2014/02/03 职场文书
中秋节主持词
2014/04/02 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书
心理健康活动总结
2014/04/30 职场文书
党支部三会一课计划
2014/09/24 职场文书
大学生党性分析材料
2014/12/19 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
离婚案件被告代理词
2015/05/23 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
vue 给数组添加新对象并赋值
2022/04/20 Vue.js