详解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 相关文章推荐
springboot中一些比较常用的注解总结
Jun 11 Java/Android
idea搭建可运行Servlet的Web项目
Jun 26 Java/Android
浅谈resultMap的用法及关联结果集映射
Jun 30 Java/Android
Java 实战项目之家居购物商城系统详解流程
Nov 11 Java/Android
Mybatis是这样防止sql注入的
Dec 06 Java/Android
Java如何实现通过键盘输入一个数组
Feb 15 Java/Android
Java工作中实用的代码优化技巧分享
Apr 21 Java/Android
Spring Boot 实现 WebSocket
Apr 30 Java/Android
Java完整实现记事本代码
Jun 16 Java/Android
Java Spring读取和存储详细操作
Aug 05 Java/Android
SpringBoot Http远程调用的方法
Aug 14 Java/Android
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
java中重写父类方法加不加@Override详解
Jun 21 #Java/Android
Java并发编程之Executor接口的使用
深入理解以DEBUG方式线程的底层运行原理
浅谈什么是SpringBoot异常处理自动配置的原理
SpringAop日志找不到方法的处理
详解SpringBoot异常处理流程及原理
You might like
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
CI框架实现优化文件上传及多文件上传的方法
2017/01/04 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
JavaScript中提前声明变量或函数例子
2014/11/12 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
Python continue语句用法实例
2014/03/11 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
flask-restful使用总结
2018/12/04 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
Python中turtle库的使用实例
2019/09/09 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
使用python实现多维数据降维操作
2020/02/24 Python
PHP面试题大全
2015/10/16 面试题
如何写出高性能的JSP和Servlet
2013/01/22 面试题
金融专业毕业生推荐信
2013/11/26 职场文书
酒店拾金不昧表扬信
2014/01/18 职场文书
奖学金感谢信
2015/01/21 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
使用Django框架创建项目
2022/06/10 Python
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang