详解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并发编程必备之Future机制
Jun 30 Java/Android
看完这篇文章获得一些java if优化技巧
Jul 15 Java/Android
java设计模式--原型模式详解
Jul 21 Java/Android
用Java实现简单计算器功能
Jul 21 Java/Android
SpringBoot整合RabbitMQ的5种模式实战
Aug 02 Java/Android
在Spring-Boot中如何使用@Value注解注入集合类
Aug 02 Java/Android
Java 实现限流器处理Rest接口请求详解流程
Nov 02 Java/Android
解决persistence.xml配置文件修改存放路径的问题
Feb 24 Java/Android
解决springboot druid数据库连接失败后一直重连的方法
Apr 19 Java/Android
springboot为异步任务规划自定义线程池的实现
Jun 14 Java/Android
Java+swing实现抖音上的表白程序详解
Jun 25 Java/Android
Spring Boot 的创建和运行示例代码详解
Jul 23 Java/Android
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
java中重写父类方法加不加@Override详解
Jun 21 #Java/Android
Java并发编程之Executor接口的使用
深入理解以DEBUG方式线程的底层运行原理
浅谈什么是SpringBoot异常处理自动配置的原理
SpringAop日志找不到方法的处理
详解SpringBoot异常处理流程及原理
You might like
PHP+MySQL5.0中文乱码解决方法
2006/11/20 PHP
第六章 php目录与文件操作
2011/12/30 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
python爬虫常用的模块分析
2014/08/29 Python
使用httplib模块来制作Python下HTTP客户端的方法
2015/06/19 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python编写弹球游戏的实现代码
2018/03/12 Python
dataframe设置两个条件取值的实例
2018/04/12 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
python反编译学习之字节码详解
2019/05/19 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
python opencv肤色检测的实现示例
2020/12/21 Python
python 基于opencv实现图像增强
2020/12/23 Python
HTML5对手机页面长按会粘贴复制禁用的解决方法
2016/07/19 HTML / CSS
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
商场端午节活动方案
2014/01/29 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers