暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何在SpringMVC中使用Swagger

万方技术 2017-06-18
643

前言

我们在上篇文章《Swagger简介:前后端分离生成接口文档的工具》中已经介绍了Swagger的诸多优点。Swagger基本支持所有语言,但最重要的是它可以在Java中与SpringMVC完美结合!那么这篇文章就介绍如何在SpringMVC中使用Swagger!


导入Swagger包

如果是Maven项目,将在pom.xml文件中写入如下配置:

如果非Maven项目,可直接下载对应版本Jar包导入项目即可。


创建配置文件

在项目中创建“SwaggerConfiguration”和“SwaggerWebMvcConfigurerAdapter”配置文件。项目目录结构可与下图不同(可不必一定在config目录下)。

SwaggerConfiguration文件内容如下图所示:

SwaggerWebMvcConfigurerAdapter文件内容如下图所示:

其中@ComponentScan注解的basePackages属性需要填写Controller所在路径。


我们要保证Spring能够扫描到我们的配置信息,在Spring或SpringMVC中配置如下图(可单独制定路径)。


运行程序后我们就可以在项目根路径下访问到swagger-ui.html页面了,地址如:http://localhost:8080/SwaggerDemo/swagger-ui.html


Swagger的使用

Swagger通过注解生成API文档,我们只需要在方法实体类上增加简单的注解即可做到。


我们先来看看Swagger的主页:

要想Swagger扫描到上图的Controller,需要在Controller中的类名上加入@Controller,同时Controller的简介需要用到Swagger提供的@Api 注解:

实际应用:

@Controller
@RequestMapping("/login")
@Api(tags = "用户注册登录")
public class LoginController {
....
}


这样就可以在生成的页面上展示相应的文档内容了。

下面介绍Swagger的几个常用注解,包含我们上文所展示的@Api还有其他几个注解:

  • @Api:修饰整个类,描述Controller的作用

  • @ApiOperation:描述一个类的一个方法,或者说一个接口

  • @ApiParam:单个参数描述

  • @ApiModel:用对象来接收参数

  • @ApiProperty:用对象接收参数时,描述对象的一个字段


@ApiOperation注解具体应用:

这个注解会在Swagger页面中的单个方法生成对应“方法访问动词”、“方法简述”、“方法详细描述”。


@ApiParam注解具体应用:

针对每个参数增加注解@ApiParam,会在Swagger测试页面中生成对应“参数名”、“参数说明”、“参数类型”。这些有助于进行单元测试,非常实用!


@ApiModel@ApiProperty注解具体应用:

当我们需要用一个对象作为接收参数或者返回值时,Swagger也准备了对应的注解供我们使用,当我们创建一个Bean类作为规定返回值结构时

增加@ApiModel注解对类进行说明,同时我们增加一些属性并使用@ApiProperty对属性进行说明。

最终的结果是在Swagger规定某个方法的返回值时可以展示其具体信息:

点击 Model Schema可以展示具体结构:

同时当我们将声明好的对象作为参数传递时,Swagger也能对参数进行解析,便于单元测试,如我们添加一个收货地址类

然后我们将其作为参数:

最终的Swagger会生成如下界面:

Swagger会将其参数完全解析出来,很棒吧!


Swagger生成API文档原理

那么,这么强大的Swagger是如何生成API文档的呢?


其实Swagger是通过程序中的注解生成Swagger需要的Json串,然后静态页面通过解析Json串生成我们要的API文档。这也是本文开篇时所说的,为什么Swagger基本能支持所有语言的原因!本质上,Swagger是依赖Json串进行展示的。


那么Swagger所依赖的Json串到底是什么样子呢?我大概截一部分图来展示吧!


原始文档为:


Swagger的其他产品:

我们之前所介绍的都是Swagger-UI,那么Swagger还有能对Swagger串进行编辑的工具并展示视图的Swagger Editor 。 还有能生成不同平台客户端代码的Swagger Codegen。


这些程序都非常强大,未来有机会会分享给大家,希望大家对我这次的分享比较满意,感谢大家!


ps:最近由于工作和私人原因,更新缓慢,在此给期待我们更新的朋友们致以最真诚的抱歉,并且保证在事情解决之后加倍努力更新,争取写出更好的文章,给大家更好的阅读体验。感谢大家长期以来的支持,谢谢!


相关文档:Swagger简介:前后端分离生成接口文档的工具

文章转载自万方技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论