详解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 相关文章推荐
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
Jun 26 Java/Android
springboot+WebMagic+MyBatis爬虫框架的使用
Aug 07 Java/Android
Java异常处理try catch的基本用法
Dec 06 Java/Android
Java后端 Dubbo retries 超时重试机制的解决方案
Apr 14 Java/Android
Android自定义双向滑动控件
Apr 19 Java/Android
JAVA 线程池(池化技术)的实现原理
Apr 28 Java/Android
Java 死锁解决方案
May 11 Java/Android
Java 多线程并发FutureTask
Jun 28 Java/Android
Android RecyclerView实现九宫格效果
Jun 28 Java/Android
MyBatis在注解上使用动态SQL方式(@select使用if)
Jul 07 Java/Android
向Spring IOC 容器动态注册bean实现方式
Jul 15 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地址引用(php地址引用的效率问题)
2012/03/23 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
php远程下载类分享
2016/04/13 PHP
写了10年的Javascript也未必全了解的连续赋值运算
2011/03/25 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
javascript相关事件的几个概念
2015/05/21 Javascript
JS中如何比较两个Json对象是否相等实例代码
2016/07/13 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
python动态文本进度条的实例代码
2020/01/22 Python
python常用运维脚本实例小结
2020/02/14 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
不同浏览器对CSS3和HTML5的支持状况
2009/10/31 HTML / CSS
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
工程造价管理专业大专生求职信
2013/10/06 职场文书
法务专员岗位职责
2014/01/02 职场文书
迟到检讨书400字
2014/01/13 职场文书
简历中的自我评价范文
2014/02/05 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
认识实习感想
2015/08/10 职场文书
防止web项目中的SQL注入
2021/12/06 MySQL