详解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基于webSocket实现扫码登录
Jun 22 Java/Android
springboot集成springCloud中gateway时启动报错的解决
Jul 16 Java/Android
OpenCV实现普通阈值
Nov 17 Java/Android
Java 在线考试云平台的实现
Nov 23 Java/Android
java代码实现空间切割
Jan 18 Java/Android
Java 超详细讲解hashCode方法
Apr 07 Java/Android
Spring Boot 使用 Spring-Retry 进行重试框架
Apr 24 Java/Android
JAVA 线程池(池化技术)的实现原理
Apr 28 Java/Android
JAVA springCloud项目搭建流程
May 11 Java/Android
java中如何截取字符串最后一位
Jul 07 Java/Android
基于Android10渲染Surface的创建过程
Aug 14 Java/Android
spring boot实现文件上传
Aug 14 Java/Android
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
java中重写父类方法加不加@Override详解
Jun 21 #Java/Android
Java并发编程之Executor接口的使用
深入理解以DEBUG方式线程的底层运行原理
浅谈什么是SpringBoot异常处理自动配置的原理
SpringAop日志找不到方法的处理
详解SpringBoot异常处理流程及原理
You might like
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
php操作access数据库的方法详解
2017/02/22 PHP
使用laravel和ECharts实现折线图效果的例子
2019/10/09 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
javascript代码加载优化方法
2011/01/30 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
深入理解JS中的变量及作用域、undefined与null
2014/03/04 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
基于jQuery实现多层次的手风琴效果附源码
2015/09/21 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
js中作用域的实例解析
2017/03/16 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
基于vue中keep-alive缓存问题的解决方法
2018/09/21 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
Python3 Random模块代码详解
2017/12/04 Python
在python中用url_for构造URL的方法
2019/07/25 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
《浅水洼里的小鱼》听课反思
2014/02/28 职场文书
经典英文广告词
2014/03/18 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
会计学习心得体会
2014/09/09 职场文书
个人租房协议书样本
2014/10/01 职场文书
滞留工资返还协议书
2014/10/19 职场文书
redis实现排行榜功能
2021/05/24 Redis
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS