Swagger与SpringMVC项目整合

来源:http://www.2cto.com/kf/201502/376959.html

为了方便的管理项目中API接口,在网上找了好多关于API接口管理的资料,感觉目前最流行的莫过于Swagger了,功能强大,UI界面漂亮,并且支持在线测试等等,所以本人仔细研究了下Swagger的使用,下面就如何将Swagger与个人的SpringMVC项目进行整合做详细说明:

最终API管理界面:

详细步骤:

Step1:项目中引入相关jar包:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<code class="language-xml" hljs="">    <properties>
        <project.build.sourceencoding>UTF-8</project.build.sourceencoding>
        <version.spring>3.2.9.RELEASE</version.spring>
        <version.jackson>2.4.4</version.jackson>
    </properties>
 
    <dependencies>
        ....
        <dependency>
            <groupid>com.mangofactory</groupid>
            swagger-springmvc</artifactid>
            <version>0.9.5</version>
        </dependency>
 
        <dependency>
            <groupid>com.fasterxml.jackson.core</groupid>
            jackson-annotations</artifactid>
            <version>${version.jackson}</version>
        </dependency>
        <dependency>
            <groupid>com.fasterxml.jackson.core</groupid>
            jackson-databind</artifactid>
            <version>${version.jackson}</version>
        </dependency>
        <dependency>
            <groupid>com.fasterxml.jackson.core</groupid>
            jackson-core</artifactid>
            <version>${version.jackson}</version>
        </dependency>
    </dependencies></code>

Step2:添加自定义config文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<code class="language-java" hljs="">package com.spg.apidoc.common.configer;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
import com.mangofactory.swagger.configuration.SpringSwaggerConfig;
import com.mangofactory.swagger.models.dto.ApiInfo;
import com.mangofactory.swagger.plugin.EnableSwagger;
import com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin;
 
/**
 * 项目名称:apidoc
 *
 * @description:
 * @author Wind-spg
 * @create_time:2015年2月10日 上午10:27:51
 * @version V1.0.0
 *
 */
@Configuration
@EnableSwagger
// Loads the spring beans required by the framework
public class MySwaggerConfig
{
 
    private SpringSwaggerConfig springSwaggerConfig;
 
    /**
     * Required to autowire SpringSwaggerConfig
     */
    @Autowired
    public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig)
    {
        this.springSwaggerConfig = springSwaggerConfig;
    }
 
    /**
     * Every SwaggerSpringMvcPlugin bean is picked up by the swagger-mvc
     * framework - allowing for multiple swagger groups i.e. same code base
     * multiple swagger resource listings.
     */
    @Bean
    public SwaggerSpringMvcPlugin customImplementation()
    {
        return new SwaggerSpringMvcPlugin(this.springSwaggerConfig).apiInfo(apiInfo()).includePatterns(
                .*?);
    }
 
    private ApiInfo apiInfo()
    {
        ApiInfo apiInfo = new ApiInfo(
                My Apps API Title,
                My Apps API Description,
                My Apps API terms of service,
                My Apps API Contact Email,
                My Apps API Licence Type,
                My Apps API License URL);
        return apiInfo;
    }
}</code>

Step3:将此配置加入到Spring容器中,如下:

1
<code class="language-xml" hljs=""><bean class="com.spg.apidoc.common.configer.MySwaggerConfig"></bean></code>

Step4:在代码中添加相关APIAnnotation,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<code class="language-java" hljs="">    @ResponseBody
    @RequestMapping(
            value = addUser, method = RequestMethod.POST, produces = application/json; charset=utf-8)
    @ApiOperation(value = 添加用户, httpMethod = POST, response = BaseResultVo.class, notes = add user)
    public String addUser(@ApiParam(required = true, name = postData, value = 用户信息json数据) @RequestParam(
            value = postData) String postData, HttpServletRequest request)
    {
        LOGGER.debug(String.format(at function, %s, postData));
        if (null == postData || postData.isEmpty())
        {
            return super.buildFailedResultInfo(-1, post data is empty!);
        }
 
        UserInfo user = JSON.parseObject(postData, UserInfo.class);
        int result = userService.addUser(user);
        return buildSuccessResultInfo(result);
    }</code>

说明:
其中@ApiOperation和@ApiParam为添加的API相关注解,个参数说明如下:
@ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response = “接口返回参数类型”, notes = “接口发布说明”;其他参数可参考源码;
@ApiParam(required = “是否必须参数”, name = “参数名称”, value = “参数具体描述”

Step5:添加Swagger UI配置

在GitHub上下载SwaggerUI项目,将dist下所有内容拷贝到本地项目webapp下面,结果目录如下图所示:

html">Step6:修改index.html

将index.html中http://petstore.swagger.wordnik.com/v2/swagger.json修改为http://localhost:8080/{projectname}/api-docs

到此为止,所有配置完成,启动你的项目,访问http://localhost:8080/{projectName}/index.html即可看到如下所示页面:

最新文章

  1. python serial 获取所有的串口名称
  2. CSS3实现圆形进度条
  3. 【jQuery小实例】js 插件 查看图片
  4. Cocos2d-x 核心概念 - 场景(Scene)
  5. SQL Server Reporting Service(SSRS) 第二篇 SSRS数据分组Parent Group
  6. apache https 伪静态
  7. String,Date,XMLGregorianCalendar的转换
  8. Java——UDP
  9. app上传到app Store常见问题
  10. poj 2513 Colored Sticks trie树+欧拉图+并查集
  11. 怎样对ZBrush中的材料进行渲染和着色
  12. iBatis.Net实现返回DataTable和DataSet对象
  13. 建立一个Hello World级别的Spring项目
  14. mysql中character_set_connection的作用
  15. c#拖放
  16. hql中的in查询
  17. 【转载】SQL语句中Union和Union All的区别
  18. dremio jdbc使用
  19. Javascript高级编程学习笔记(65)—— 事件(9)复合事件
  20. OJ:析构函数实现多态

热门文章

  1. 团体程序设计天梯赛L2-001 紧急救援 2017-03-22 17:25 93人阅读 评论(0) 收藏
  2. zabbix监控cpu jumps
  3. rabbitmq 简单应用
  4. .NET框架源码解读之MYC编译器
  5. [Erlang33]使用recon从网页查看Erlang运行状态
  6. Linux下source文件两种方法
  7. (zxing.net)一维码Code 128的简介、实现与解码
  8. SQL Server Job
  9. 在ASP.NET根据DataTable中的内容导出Excel
  10. 自己从0开始学习Unity的笔记 II (C#条件语句基础练习)