`
wx1568905209
  • 浏览: 25129 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

SpringBoot学习之swagger2的集成和使用

 
阅读更多

Swagger是一个流行的API开发框架,用于生成、描述、调用和可视化REST风格的Web服务,这个框架以“开放API声明”为基础,对整个API的开发周期都提供了相应的解决方案,(包括设计、编码和测试,几乎支持所有语言。由于Spring的流行,出现了一个基于Spring的组件swagger-SpringMVC,用于将swagger集成到SpringMVC中来。

Swagger2介绍

  Swagger2是一个可以构建和调试RESTful接口文档的组件,利用Swagger2的注解可以快速的在项目中构建Api文档,并且提供了测试API的功能,Swagger让部署管理和使用功能强大的API从未如此简单。

Swagger2介绍

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);
	}
}

属性配置

Swagger2属性配置

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的集成和简单使用进行了说明,详细的用法,可自行搜索相关资料下,这里就不阐述了。

转载于:https://my.oschina.net/u/1030471/blog/3026866

分享到:
评论

相关推荐

    SpringBoot2+Swagger2

    总的来说,这个"SpringBoot2+Swagger2"示例将教你如何在Spring Boot 2应用中集成Swagger 2,创建和管理RESTful API,并生成详细的文档,这对于开发和维护高质量的API服务至关重要。通过深入学习这两个技术的结合,你...

    springBoot整合Swagger项目例子

    通过这个例子,你可以学习到如何将Swagger集成到SpringBoot应用中,提升API的可读性和可维护性,同时也方便了接口的测试工作。 总结一下,SpringBoot整合Swagger的主要步骤包括: 1. 添加Swagger相关依赖。 2. ...

    springboot整合swagger2实例

    本文将深入探讨如何在SpringBoot项目中集成Swagger2,以及如何通过其实例化一个完整的API文档。 1. 安装与配置Swagger2 首先,我们需要在SpringBoot项目中引入Swagger2的相关依赖。在`pom.xml`文件中添加如下Maven...

    SpringBoot集成Swagger简单使用

    本文将详细介绍如何在SpringBoot项目中集成Swagger并进行简单使用。 首先,我们需要引入Swagger的相关依赖。在SpringBoot的`pom.xml`文件中添加`springfox-swagger2`和`springfox-swagger-ui`两个依赖。它们分别是...

    SpringBoot1使用Swagger2例子

    Swagger2则是一款强大的API文档生成工具,它可以自动生成、测试和维护RESTful API文档,使得开发者能够更方便地理解、使用和维护接口。本篇文章将深入探讨如何在SpringBoot项目中集成Swagger2,创建直观易用的API...

    springboot快速集成Swagger2集成公共服务,支持开关和子项目包路径配置.docx

    SpringBoot 与 Swagger2 的集成使得在微服务环境中更加便捷地管理和测试 API。 首先,集成 Swagger2 到 SpringBoot 项目中,我们需要在 `pom.xml` 文件中添加 Swagger2 相关的依赖。以下是一个示例: ```xml &lt;!-- ...

    基于Springboot 2.0的springboot2.0_swagger集成Swagger设计源码

    本项目是基于Springboot 2.0的springboot2.0_swagger集成Swagger设计源码,包含166个文件,其中XML文件130个,Java源文件30个,

    spring Boot 集成swagger2全过程(代码包含集成Spring Security+ JWT)

    在本教程中,我们将深入探讨如何将Swagger2与Spring Boot集成,同时考虑到Spring Security和JWT(JSON Web Token)的安全机制。Swagger2是一个流行的API文档工具,它允许开发者以交互式方式展示和测试RESTful API。...

    springboot-swagger-demo202010221424.zip

    总结来说,"springboot-swagger-demo202010221424.zip"示例展示了SpringBoot项目中如何集成Swagger,通过简单的配置和注解,实现API文档的自动化生成和管理。这种方式不仅提高了开发效率,也让API的使用者能够更方便...

    h2嵌入式数据库例子 springboot+h2+mybatisplus+swagger使用例子

    springboot+h2+mybatisplus+swagger使用例子 h2数据库例子 H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一 个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容...

    springboot+swagger2例子

    你可以解压并运行这个项目,亲自体验SpringBoot与Swagger2的集成效果,以及如何通过Swagger2来管理和测试API。 通过这个例子,我们可以了解到SpringBoot和Swagger2的集成方法,以及如何利用它们来创建、管理和测试...

    springboot+shiro+swagger2前后端分离整合

    本项目"springboot+shiro+swagger2前后端分离整合"提供了一个实用的框架组合,旨在帮助开发者快速搭建这样的应用。以下是对这个项目及其组成部分的详细解析: 1. **Spring Boot**: Spring Boot是由Pivotal团队...

    springboot集成swagger实现接口管理源码

    SpringBoot集成Swagger实现接口管理是现代Web开发中的一项重要技术,它使得API文档的创建、维护和使用变得更加方便。Swagger是一款强大的RESTful API文档工具,它允许开发者通过注解来描述Spring MVC的Controller...

    springboot+swagger3+mybatis-plus3.5.1代码生成+druid+log4j2【最完美】的一次配置

    在SpringBoot项目中集成Swagger3,我们可以使用`springfox-swagger2`和`springfox-swagger-ui`库,通过注解来定义API信息,然后Swagger UI界面会自动生成交互式的文档。 MyBatis-Plus是MyBatis的扩展,它提供了一些...

    springboot+swagger的一个小Demo

    通过这个小Demo,你可以学习如何在SpringBoot应用中集成Swagger2,了解如何使用注解描述API,以及如何生成和测试API文档。这对于提升开发效率、改善API的可维护性和用户体验都有显著的帮助。在实际工作中,这样的...

    springboot - 2.7.3版本 - (三)整合Swagger3

    Swagger3还支持响应模型的定义,可以使用`@ApiModel`和`@ApiModelProperty`注解: ```java @ApiModel(description = "用户信息") public class User { @ApiModelProperty(value = "用户ID", example = "1", ...

    springboot swagger2 demo

    通过以上步骤,我们便可以在SpringBoot项目中成功集成Swagger2,实现API的自动化文档生成和测试。这不仅可以提高开发效率,也能为团队协作和API维护带来极大的便利。在实际项目中,根据具体需求,还可以进一步定制...

    Swagger详解(SpringBoot Swagger集成).docx

    2. **使用官方依赖**(`springfox-swagger2` 和 `springfox-swagger-ui`): - 添加 Swagger 相关的 Maven 依赖,包括 API 描述、UI 界面和 JSON 返回数据的支持。 - 创建 Swagger 配置类,指定 API 的基础包名,...

    springboot集成swagger的demo

    SpringBoot集成Swagger是一个高效的方法,用于为API提供交互式文档,极大地简化了接口文档的维护。Swagger是一个强大的工具,它允许开发人员通过简单的注解在代码中定义接口,然后自动生成文档,使得前后端协作更加...

    基于SpringBoot和Swagger2生成离线文档:PDF和Html5格式.zip

    总结来说,这个项目涵盖了使用SpringBoot进行后端开发、Swagger2生成和导出API文档、以及在Windows操作系统下的测试和部署实践,对于学习和理解SpringBoot与Swagger2的结合应用,以及API文档的管理和分发有很好的...

Global site tag (gtag.js) - Google Analytics