详解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中Collection的一些常用方法总结
Jun 13 Java/Android
SpringBoot项目中控制台日志的保存配置操作
Jun 18 Java/Android
SpringBoot集成Redis,并自定义对象序列化操作
Jun 22 Java/Android
Spring mvc是如何实现与数据库的前后端的连接操作的?
Jun 30 Java/Android
Java基础之this关键字的使用
Jun 30 Java/Android
解决Swagger2返回map复杂结构不能解析的问题
Jul 02 Java/Android
spring boot中nativeQuery的用法
Jul 26 Java/Android
Java十分钟精通进阶适配器模式
Apr 06 Java/Android
零基础学java之带参数以及返回值的方法
Apr 10 Java/Android
Mybatis-Plus 使用 @TableField 自动填充日期
Apr 26 Java/Android
Android 中的类文件和类加载器详情
Jun 05 Java/Android
Java界面编程实现界面跳转
Jun 16 Java/Android
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
java中重写父类方法加不加@Override详解
Jun 21 #Java/Android
Java并发编程之Executor接口的使用
深入理解以DEBUG方式线程的底层运行原理
浅谈什么是SpringBoot异常处理自动配置的原理
SpringAop日志找不到方法的处理
详解SpringBoot异常处理流程及原理
You might like
合作指挥官:孟斯克
2020/03/16 星际争霸
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
Angular ng-repeat指令实例以及扩展部分
2016/12/26 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
详解如何快速配置webpack多入口脚手架
2018/12/28 Javascript
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
wxPython事件驱动实例详解
2014/09/28 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
2018/02/03 Python
Python使用pymongo模块操作MongoDB的方法示例
2018/07/20 Python
Python 获取div标签中的文字实例
2018/12/20 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
Python实现动态给类和对象添加属性和方法操作示例
2020/02/29 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
EJB timer的种类
2014/10/28 面试题
英文留学推荐信范文
2014/01/25 职场文书
119消防日活动总结
2014/08/29 职场文书
公司合并协议书范本
2014/09/30 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
运输公司工作总结
2015/08/11 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
Python基础之数据类型知识汇总
2021/05/18 Python
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS
Python学习开发之图形用户界面详解
2021/08/23 Python
python实现层次聚类的方法
2021/11/01 Python