Swagger是一个流行的API开发框架,用于生成、描述、调用和可视化REST风格的Web服务,这个框架以“开放API声明”为基础,对整个API的开发周期都提供了相应的解决方案,(包括设计、编码和测试,几乎支持所有语言。由于Spring的流行,出现了一个基于Spring的组件swagger-SpringMVC,用于将swagger集成到SpringMVC中来。
Swagger2介绍
Swagger2是一个可以构建和调试RESTful接口文档的组件,利用Swagger2的注解可以快速的在项目中构建Api文档,并且提供了测试API的功能,Swagger让部署管理和使用功能强大的API从未如此简单。
SpringBoot集成
添加Swagger2依赖
<!-- 引入 Swagger2依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
创建Swagger2配置文件
主要是添加注解 @EnableSwagger2和定义Docket的bean类
@Configuration
@EnableSwagger2 // 开启 swagger2 功能
public class SwaggerConfig {
private final String name = "独泪了无痕";
private final String url = "https://github.com/dllwh/";
private final String email = "duleilewuhen@sina.com";
// 是否开启swagger,正式环境一般是需要关闭的,可根据springboot的多环境配置进行设置
@Value(value = "${swagger.enabled}")
private Boolean swaggerEnabled;
@Bean
public Docket restApiDocket() {
return new Docket(DocumentationType.SWAGGER_2) //
.apiInfo(apiInfo()) // 用来创建该Api的基本信息(这些基本信息会展现在文档页面中)
.enable(swaggerEnabled) // 是否开启
.genericModelSubstitutes(DeferredResult.class) //
.useDefaultResponseMessages(false) //
.forCodeGeneration(false) //
.pathMapping("/").select() // 选择那些路径和api会生成document
.apis(RequestHandlerSelectors.basePackage("org.dllwh")) // 指定扫描的包路径
.paths(PathSelectors.any())// 指定路径处理PathSelectors.any()代表所有的路径
.build().pathMapping("/");// 创建
}
/**
* @方法描述:构建 api文档的详细信息函数
* @return
*/
private ApiInfo apiInfo() {
// 联系人信息:联系人名字、联系人URL、联系人email
Contact contact = new Contact(name, url, email);
return new ApiInfoBuilder().title("SpringBoot-Swagger2集成和使用-demo示例") // 标题
.description("Spring Boot 学习") // 描述
.contact(contact)// 作者信息
.version("0.0.1")// 版本
// .extensions(null) //在basePath 基础上需要排除的url规则
// .termsOfServiceUrl("") // 服务条款url
// .license("") //许可证
// .licenseUrl("") //许可证url
.build();
}
}
添加文档内容
修改Controller,添加API注解
@RestController
@Api(tags = "博客API")
public class SwaggerController {
@Autowired
private BlogService blogService;
@GetMapping("getBlogById/{id}")
@ApiOperation(value = "通过ID获取博客信息")
@ApiImplicitParam(name = "id", value = "查询ID", required = true)
public Map<String, Object> getBlogById(@PathVariable Integer id) {
Blog blogById = blogService.getBlogById(id);
if (blogById == null) {
return Json.fail();
} else {
return Json.success(blogById);
}
}
@DeleteMapping("deleteBlogById/{id}")
@ApiOperation(value = "通过ID删除博客信息")
public Map<String, Object> deleteBlogById(@PathVariable Integer id) {
Blog blogById = blogService.getBlogById(id);
if (blogById == null) {
return Json.fail();
} else {
blogService.deleteBlogById(id);
return Json.success(blogById);
}
}
@GetMapping("getAllBlogs")
@ApiOperation(value = "获取全部博客信息")
public Map<String, Object> getAllBlogs() {
List<Blog> allBlogs = blogService.getAllBlogs();
if (allBlogs.size() == 0) {
return Json.fail();
} else {
return Json.success(allBlogs);
}
}
@PutMapping("insertBlog")
@ApiOperation(value = "创建博客信息")
public Map<String, Object> insertBlog(Blog blog) {
blogService.insertBlog(blog);
return Json.success(blog);
}
@PutMapping("updateBlog")
@ApiOperation(value = "博客信息修改")
public Map<String, Object> updateBlog(Blog blog) {
blogService.updateBlog(blog);
return Json.success(blog);
}
}
属性配置
Swagger访问与使用
api首页路径
http://127.0.0.1:8219/swagger-ui.html
调试:点击需要访问的api列表,点击try it out!按钮,即可弹出一下页面:
执行:
结果:
Swagger常用属性说明
API
说明
Api |
用于controller类上,描述Controller的作用,表示标识这个类是swagger的资源 |
ApiOperation |
用在controller的方法上,说明方法的作用 |
ApiImplicitParams |
用在controller的方法上,包含一组参数说明 |
ApiImplicitParam |
用在@ApiImplicitParams的方法里边,指定一个请求参数的各个方面 |
ApiResponses |
用在controller的方法上,用于表示一组响应 |
ApiRespons |
用在 @ApiResponses里边,一般用于表达一个错误的响应信息 |
ApiModel |
用在返回对象类上 |
ApiModelProperty |
用在出入参数对象的字段上,描述对象的一个字段 |
注意事项
继承WebMvcConfigurationSupport之后,静态文件映射会出现问题,需要重新指定静态资源,在WebConfigurer中添加如下代码:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("/favicon.ico")
.addResourceLocations("classpath:/META-INF/resources/favicon.ico");
}
图形界面化
swagger-bootstrap-ui
swagger-bootstrap-ui是springfox-swagger的增强UI实现,为Java开发者在使用Swagger的时候,能拥有一份简洁、强大的接口文档体验。
<!-- Swagger-Bootstrap-UI -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>${last-version}</version>
</dependency>
swagger-bootstrap-ui 的默认访问地址是http://${host}:${port}/doc.html
相关使用方法,请查看Swagger-Bootstrap-UI用户指南
swagger-ui-layer
<dependency>
<groupId>com.github.caspar-chen</groupId>
<artifactId>swagger-ui-layer</artifactId>
<version>${last-version}</version>
</dependency>
- swagger-ui-layer 最新版jar包地址:
https://search.maven.org/search?q=g:com.github.caspar-chen%20AND%20a:swagger-ui-layer
- swagger-ui-layer 的默认访问地址是
http://${host}:${port}/docs.html
总结
本章节主要是对Swagger的集成和简单使用进行了说明,详细的用法,可自行搜索相关资料下,这里就不阐述了。
相关推荐
总的来说,这个"SpringBoot2+Swagger2"示例将教你如何在Spring Boot 2应用中集成Swagger 2,创建和管理RESTful API,并生成详细的文档,这对于开发和维护高质量的API服务至关重要。通过深入学习这两个技术的结合,你...
通过这个例子,你可以学习到如何将Swagger集成到SpringBoot应用中,提升API的可读性和可维护性,同时也方便了接口的测试工作。 总结一下,SpringBoot整合Swagger的主要步骤包括: 1. 添加Swagger相关依赖。 2. ...
本文将深入探讨如何在SpringBoot项目中集成Swagger2,以及如何通过其实例化一个完整的API文档。 1. 安装与配置Swagger2 首先,我们需要在SpringBoot项目中引入Swagger2的相关依赖。在`pom.xml`文件中添加如下Maven...
本文将详细介绍如何在SpringBoot项目中集成Swagger并进行简单使用。 首先,我们需要引入Swagger的相关依赖。在SpringBoot的`pom.xml`文件中添加`springfox-swagger2`和`springfox-swagger-ui`两个依赖。它们分别是...
Swagger2则是一款强大的API文档生成工具,它可以自动生成、测试和维护RESTful API文档,使得开发者能够更方便地理解、使用和维护接口。本篇文章将深入探讨如何在SpringBoot项目中集成Swagger2,创建直观易用的API...
SpringBoot 与 Swagger2 的集成使得在微服务环境中更加便捷地管理和测试 API。 首先,集成 Swagger2 到 SpringBoot 项目中,我们需要在 `pom.xml` 文件中添加 Swagger2 相关的依赖。以下是一个示例: ```xml <!-- ...
本项目是基于Springboot 2.0的springboot2.0_swagger集成Swagger设计源码,包含166个文件,其中XML文件130个,Java源文件30个,
在本教程中,我们将深入探讨如何将Swagger2与Spring Boot集成,同时考虑到Spring Security和JWT(JSON Web Token)的安全机制。Swagger2是一个流行的API文档工具,它允许开发者以交互式方式展示和测试RESTful API。...
总结来说,"springboot-swagger-demo202010221424.zip"示例展示了SpringBoot项目中如何集成Swagger,通过简单的配置和注解,实现API文档的自动化生成和管理。这种方式不仅提高了开发效率,也让API的使用者能够更方便...
springboot+h2+mybatisplus+swagger使用例子 h2数据库例子 H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一 个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容...
你可以解压并运行这个项目,亲自体验SpringBoot与Swagger2的集成效果,以及如何通过Swagger2来管理和测试API。 通过这个例子,我们可以了解到SpringBoot和Swagger2的集成方法,以及如何利用它们来创建、管理和测试...
本项目"springboot+shiro+swagger2前后端分离整合"提供了一个实用的框架组合,旨在帮助开发者快速搭建这样的应用。以下是对这个项目及其组成部分的详细解析: 1. **Spring Boot**: Spring Boot是由Pivotal团队...
SpringBoot集成Swagger实现接口管理是现代Web开发中的一项重要技术,它使得API文档的创建、维护和使用变得更加方便。Swagger是一款强大的RESTful API文档工具,它允许开发者通过注解来描述Spring MVC的Controller...
在SpringBoot项目中集成Swagger3,我们可以使用`springfox-swagger2`和`springfox-swagger-ui`库,通过注解来定义API信息,然后Swagger UI界面会自动生成交互式的文档。 MyBatis-Plus是MyBatis的扩展,它提供了一些...
通过这个小Demo,你可以学习如何在SpringBoot应用中集成Swagger2,了解如何使用注解描述API,以及如何生成和测试API文档。这对于提升开发效率、改善API的可维护性和用户体验都有显著的帮助。在实际工作中,这样的...
Swagger3还支持响应模型的定义,可以使用`@ApiModel`和`@ApiModelProperty`注解: ```java @ApiModel(description = "用户信息") public class User { @ApiModelProperty(value = "用户ID", example = "1", ...
通过以上步骤,我们便可以在SpringBoot项目中成功集成Swagger2,实现API的自动化文档生成和测试。这不仅可以提高开发效率,也能为团队协作和API维护带来极大的便利。在实际项目中,根据具体需求,还可以进一步定制...
2. **使用官方依赖**(`springfox-swagger2` 和 `springfox-swagger-ui`): - 添加 Swagger 相关的 Maven 依赖,包括 API 描述、UI 界面和 JSON 返回数据的支持。 - 创建 Swagger 配置类,指定 API 的基础包名,...
SpringBoot集成Swagger是一个高效的方法,用于为API提供交互式文档,极大地简化了接口文档的维护。Swagger是一个强大的工具,它允许开发人员通过简单的注解在代码中定义接口,然后自动生成文档,使得前后端协作更加...
总结来说,这个项目涵盖了使用SpringBoot进行后端开发、Swagger2生成和导出API文档、以及在Windows操作系统下的测试和部署实践,对于学习和理解SpringBoot与Swagger2的结合应用,以及API文档的管理和分发有很好的...