Java SpringBoot详解集成以及配置Swagger流程

网友投稿 297 2022-11-28

Java SpringBoot详解集成以及配置Swagger流程

一、swagge简介

前后端分离:

后端︰后端控制层,服务层,数据访问层【后端团队】

前端:前端控制层,视图层【前端团队】

前后端通过API进行交互

前后端相对独立且松耦合

产生问题:前后端集成,前端或者后端无法做到“及时协商,尽早解决”,最终导致问题集中爆发

解决方法:首先定义schema [ 计划的提纲 ],并实时跟踪最新的API,降低集成风险

前后端分离: 前端测试后端接口:postman

后端提供接口,需要实时更新最新的消息及改动!

Swagger

号称世界上最流行的API框架

Restful Api 文档在线自动生成器 => API 文档 与API 定义同步更新

直接运行,在线测试API

支持多种语言 (如:java,php等)

官网:API Documentation & Design Tools for Teams | Swagger

二、SpringBoot集成Swagger

1、新建一个SpringBoot-web项目

2、添加Maven依赖

io.springfox

springfox-swagger2

2.9.2

io.springfox

springfox-swagger-ui

2.9.2

3、编写HelloController,测试确保运行成功!

4、要使用Swagger,我们需要编写一个配置类-SwaggerConfig来配置 Swagger

@Configuration

@EnableSwagger2 //开启Swagger2

public class SwaggerConfig {

}

5.访问测试 :http://localhost:8081/swagger-ui.html,可以看到swagger的界面;

三、配置Swagger

1、Swagger实例Bean是Docket,所以通过配置Docket实例来配置Swaggger。

//配置了Swagger的Docket的bean实例

@Bean

public Docket docket(){

return new Docket(DocumentationType.SWAGGER_2);

}

2、可以通过apiInfo()属性配置文档信息

//配置文档信息

private ApiInfo apiInfo() {

Contact contact = new Contact("龍弟", "https://blog.csdn.net/weixin_48838340", "联系人邮箱");

return new ApiInfo(

"龍弟的Swagger学习文档", // 标题

"学习演示如何配置Swagger", // 描述

"v1.0", // 版本

"https://blog.csdn.net/weixin_48838340", // 组织链接

contact, // 联系人信息

"Apach 2.0 许可", // 许可

"许可链接", // 许可连接

new ArrayList<>()// 扩展

);

}

}

3、Docket 实例关联上 apiInfo()

@Bean

public Docket docket(){

return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());

}

4.重启项目

四、配置扫描接口

构建Docket时通过select()方法配置怎么扫描接口。

//配置了Swagger的Docket的bean实例

@Bean

public Docket docket(){

return new Docket(DocumentationType.SWAGGER_2)

.apiInfo(apiInfo())

.select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口

//any() // 扫描所有,项目中的所有接口都会被扫描到

// none() // 不扫描接口

// withMethodAnnotation通过方法上的注解扫描,如withMethodAnnohttp://tation(GetMapping.class)只扫描get请求

// 通过类上的注解扫描,如.withClassAnnotation(Controller.class)只扫描有controller注解的类中的接口

.apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))

//path() 过滤什么路径

.paths(PathSelectors.ant("/longdi/**"))

.build();

};

五、配置Swagger开关

1、通过enable()方法配置是否启用swagger

@Bean

public Docket docket() {

return new Docket(DocumentationType.SWAGGER_2)

.apiInfo(apiInfo())

.enable(false) //配置是否启用Swagger,如果是false,在浏览器将无法访问

VlyQi .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口

.apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))

// 配置如何通过path过滤,即这里只扫描请求以/longdi开头的接口

.paths(PathSelectors.ant("/longdi/**"))

.build();

}

2.如何动态配置当项目处于test、dev环境时显示swagger

@Bean

public Docket docket(Environment environment) {

// 设置要显示swagger的环境

Profiles of = Profiles.of("dev", "test");

// 判断当前是否处于该环境

// 通过 enable() 接收此参数判断是否要显示

boolean b = environment.acceptsProfiles(of);

return new Docket(DocumentationType.SWAGGER_2)

.apiInfo(VlyQiapiInfo())

.enable(b) //配置是否启用Swagger,如果是false,在浏览器将无法访问

.select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口

.apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))

// 配置如何通过path过滤,即这里只扫描请求以/longdi开头的接口

.paths(PathSelectors.ant("/longdi/**"))

.build();

}

六、配置API分组

1.如果没有配置分组,默认是default。通过groupName()方法即可配置分组:

@Bean

public Docket docket1(Environment environment) {

return new Docket(DocumentationType.SWAGGERhttp://_2).apiInfo(apiInfo())

.groupName("A") ;// 配置分组

// 省略配置....

}

2.配置多个分组只需要配置多个docket即可

3.重启看到下面效果

七、实体配置

1.新建一个实体类

@ApiModel为类添加注释

@ApiModelProperty为类属性添加注释

2.只要这个实体在请求接口的返回值上(即使是泛型),都能映射到实体项中:

//只要我们的接口中,返回值中存在实体类,它就会被扫描到Swagger中

@PostMapping(value="/user")

public User getUser(){

return new User();

}

3.查看效果

4.可以给请求的接口配置一些注释

//Operation接口,不是放在类上的,是方法

@ApiOperation("龍弟的接口")

@GetMapping("/hello2")

public String kuang(@ApiParam("这个名字会被返回")String username){

return "hello"+username;

}

八、总结:

1.我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息

2接口文档实时更新

3.可以在线测试

Swagger是一个优秀的工具,几乎所有大公司都有使用它

【注意点】在正式发布的时候,需要关闭Swagger! 因为出于安全考虑,同时节省运行的内存!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:LIV测试系统的结构组成和应用分析
下一篇:NLP标注工具Brat的简单使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~