一文搞懂Swagger,让你明白用了Swagger的好处!!!

🏛️ 365bet365娱乐 ⏳ 2025-08-27 05:57:34 👤 admin 👁️ 6456 💎 278
一文搞懂Swagger,让你明白用了Swagger的好处!!!

前后端分离缺陷了解Swagger之前,需要先知道什么是前后端分离

现在的时代SpringBoot + VUE以前的时代SSM + JSP模板引擎====>后端程序员前后端分离时代通过相关的API接口进行交互前后端相对独立,松耦合前后端可以分别部署在不同的服务器上伪造后端交互数据,json数据已经存在,不需要后端传入json数据了,前端工程已经可以运行后端:后端控制层 + 服务层 + 数据访问层前端:前端控制层 + 视图层前后端如何交互?但这样会产生新问题前后端集成联调,前端和后端开发人员无法做到及时协商,尽早解决问题,就会导致项目延期解决方案:前端测试后端:postMan后端提供接口,需要实时更新最新的消息和改动首先指定schema[计划大纲],团队实时更新最新的API,可以降低集成的风险;早些年:指定world计划文档前后端分离:Swagger简介Swagger官网

号称世界上最流行的API框架RestFul API文档在线生成工具--->>>==API文档与API同步更新==可以直接运行,可以在线测试API接口支持多种语言:(Java,PHP......)官网界面

使用SpringBoot集成Swagger创建SpringBoot-Web项目,导入相关依赖注意事项:

在项目中使用Swagger需要SpringBoxswagger2swaggerui代码语言:javascript代码运行次数:0运行复制

io.springfoxgroupId>

springfox-swagger2artifactId>

2.9.2version>

dependency>

io.springfoxgroupId>

springfox-swagger-uiartifactId>

2.9.2version>

dependency>

创建hello程序扩展,一个hello程序有两个请求,一个是SpringBoot项目默认的/error

image-20200611133103333

代码语言:javascript代码运行次数:0运行复制@RestController

public class HelloController {

/**

* 测试Controller

*

* @return

*/

@GetMapping("/hello")

public String hello() {

return "你好呀!!!Swagger";

}

}

配置Swagger,新建SwaggerConfig代码语言:javascript代码运行次数:0运行复制@Configuration // 标识配置类

@EnableSwagger2 // 开启Swagger

public class SwaggerConfig {

}

测试运行唯一地址:http://localhost:8080/swagger-ui.html

首页信息

配置Swagger信息修改SwaagerConfig代码语言:javascript代码运行次数:0运行复制package com.mobai.swagger.config;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import springfox.documentation.service.ApiInfo;

import springfox.documentation.service.Contact;

import springfox.documentation.spi.DocumentationType;

import springfox.documentation.spring.web.plugins.Docket;

import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;

/**

* Software:IntelliJ IDEA 2020.1 x64

* Author: MoBai·杰

* Date: 2020/6/11 13:33

* ClassName:SwaggerConfig

* 类描述:Swagger配置类

*/

@Configuration // 标识配置类

@EnableSwagger2 // 开启Swagger

public class SwaggerConfig {

/**

* 配置了Swagger的Docket的Bean实例

*

* @return

*/

@Bean

public Docket docket() {

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

}

/**

* 配置Swagger信息

*

* @return

*/

private ApiInfo apiInfo() {

// 配置作者信息

Contact contact = new Contact("墨白",

"https://www.mobaijun.com",

"mobaijun8@163.com");

// 配置API文档标题

return new ApiInfo("框架师Api",

// API文档描述

"Api Documentation",

// API版本号

"1.0",

// 配置URL(公司官网/blog地址)

"https://www.mobaijun.com",

// 作者信息

contact,

// 以下内容默认即可

"Apache 2.0",

"http://www.apache.org/licenses/LICENSE-2.0",

new ArrayList());

}

}

Swagger配置扫描接口Docket.select();

在SawggerConfig配置类完善配置扫描接口的参数代码语言:javascript代码运行次数:0运行复制 /**

* 配置了Swagger的Docket的Bean实例

*

* @return

*/

@Bean

public Docket docket() {

return new Docket(DocumentationType.SWAGGER_2)

.apiInfo(apiInfo())

// 配置扫描接口

.select()

/*

*RequestHandlerSelectors,配置要扫描接口的方式

* 参数说明:

* basePackage:基于包扫描

* class:基于类扫描

* any():扫描全部

* none():全部都不扫描

* withMethodAnnotation:通过方法的注解扫描

* // withMethodAnnotation(GetMapping.class))

* withClassAnnotation:通过类的注解扫描

*/

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

// .paths()过滤,不扫描哪些接口

.paths(PathSelectors.any())

.build();

}

配置Swagger启动代码语言:javascript代码运行次数:0运行复制/**

* 配置了Swagger的Docket的Bean实例

*

* @return

*/

@Bean

public Docket docket() {

return new Docket(DocumentationType.SWAGGER_2)

.apiInfo(apiInfo())

// 配置Swagger是否启动,默认:true

.enable(false)

// 配置扫描接口

.select()

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

.paths(PathSelectors.any())

.build();

}

小测试:如果有一个需求,需要你判断在生成环境中使用,在发布的时候不使用

开发思路先判断.enable()是不是等于false注入Enable(flag)实现,添加application-dev.properties生产环境配置和application-pro.properties发布环境配置默认application.properties环境配置添加代码语言:javascript代码运行次数:0运行复制# 开启profiles.active监听,dev测试环境,pro发布环境

spring.profiles.active=dev

生产环境修改端口号代码语言:javascript代码运行次数:0运行复制server.port=8081

发布环境修改端口号代码语言:javascript代码运行次数:0运行复制server.port=8082

SwaggerConfig配置类判断当前环境代码语言:javascript代码运行次数:0运行复制/**

* 配置了Swagger的Docket的Bean实例

*

* @return

*/

@Bean

public Docket docket(Environment environment) {

// 设置要显示的Swagger环境

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

// 通过environment.acceptsProfiles();判断自己是否在自己设定换的环境当中

boolean flag = environment.acceptsProfiles(profiles);

return new Docket(DocumentationType.SWAGGER_2)

.apiInfo(apiInfo())

// 监听自己设置的环境

.enable(flag)

// 配置扫描接口

.select()

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

.paths(PathSelectors.any())

.build();

}

配置API文档的分组配置多个组,添加.groupName()代码语言:javascript代码运行次数:0运行复制 /**

* 配置了Swagger的Docket的Bean实例

*

* @return

*/

@Bean

public Docket docket(Environment environment) {

// 设置要显示的Swagger环境

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

// 通过environment.acceptsProfiles();判断自己是否在自己设定换的环境当中

boolean flag = environment.acceptsProfiles(profiles);

return new Docket(DocumentationType.SWAGGER_2)

.apiInfo(apiInfo())

// 配置分组

.groupName("墨白小组")

// 监听自己设置的环境

.enable(flag)

// 配置扫描接口

.select()

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

.paths(PathSelectors.any())

.build();

}

效果image-20200611145705157

配置多个组代码语言:javascript代码运行次数:0运行复制@Configuration // 标识配置类

@EnableSwagger2 // 开启Swagger

public class SwaggerConfig {

/**

* 添加A组

* 每个组各司其职

*

* @return

*/

@Bean

public Docket docket1() {

return new Docket(DocumentationType.SWAGGER_2)

.groupName("A");

}

/**

* 添加B组

*

* @return

*/

@Bean

public Docket docket2() {

return new Docket(DocumentationType.SWAGGER_2)

.groupName("B");

}

/**

* 添加C组

*

* @return

*/

@Bean

public Docket docket3() {

return new Docket(DocumentationType.SWAGGER_2)

.groupName("C");

}

/**

* 配置了Swagger的Docket的Bean实例

*

* @return

*/

@Bean

public Docket docket(Environment environment) {

// 设置要显示的Swagger环境

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

// 通过environment.acceptsProfiles();判断自己是否在自己设定换的环境当中

boolean flag = environment.acceptsProfiles(profiles);

return new Docket(DocumentationType.SWAGGER_2)

.apiInfo(apiInfo())

// 配置分组

.groupName("墨白小组")

// 监听自己设置的环境

.enable(flag)

// 配置扫描接口

.select()

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

.paths(PathSelectors.any())

.build();

}

效果image-20200611150302823

实体类配置代码语言:javascript代码运行次数:0运行复制@ApiModel("用户实体类") // 添加注释

public class User {

// 添加注释

@ApiModelProperty("年龄")

private Integer age;

@ApiModelProperty("姓名")

private String name;

@ApiModelProperty("账号")

private String username;

@ApiModelProperty("密码")

private String password;

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

效果效果图

Swagger常用注解@ApiModel("注释"):实体类添加注释@ApiModelProperty("注释"):给实体类属性添加注释@ApiOperation("注释")给接口(Controller)方法添加注释,放在方法上@ApiParam("")给方法的参数添加注释@Api("")给类添加注释controller代码语言:javascript代码运行次数:0运行复制package com.mobai.swagger.controller;

import com.mobai.swagger.pojo.User;

import io.swagger.annotations.ApiOperation;

import io.swagger.annotations.ApiParam;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RestController;

/**

* Software:IntelliJ IDEA 2020.1 x64

* Author: MoBai·杰

* Date: 2020/6/11 13:25

* ClassName:HelloController

* 类描述: 测试类

*/

@ApiOperation("")

@RestController

public class HelloController {

/**

* 测试Controller

*

* @return

*/

@GetMapping("/hello")

public String hello() {

return "你好呀!!!Swagger";

}

/**

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

*

* @return

*/

@PostMapping("/user")

public User user() {

return new User();

}

@ApiOperation("Post测试类")

@PostMapping(value = "/post")

public User post(@ApiParam("用户对象") User user) {

return user;

}

}

总结添加@Configuration注解,标识配置类添加@EnableSwagger2注解开启SwaggerSwagger2Swagger-ui创建SpringBoot项目,导入Swagger依赖创建Swagger配置类配置Swagger的Docket的Bean实例配置Swagger信息我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息接口文档实时更新可以在线测试Swagger是一个优秀的工具,几乎所有的大公司都在用需要注意:正式发布的时候,关闭swagger!!!出于安全考虑,而且节省运行内存!

相关掠夺

365速发国际平台坑人
时事大家谈:中国人,你为什么不生气?

时事大家谈:中国人,你为什么不生气?

🗓️ 08-26 👁️ 5320
365速发国际平台坑人
槭树靠什么传播种子的 为什么 槭树靠什么传播种子

槭树靠什么传播种子的 为什么 槭树靠什么传播种子

🗓️ 08-12 👁️ 7414
365速发国际平台坑人
ASICS(天汇igc店)

ASICS(天汇igc店)

🗓️ 07-20 👁️ 3572