SpringMVC整合Swagger框架

本文介绍了如何将Swagger与SpringMVC框架整合,实现API的可视化展示和测试。步骤包括引入相关jar包,配置Swagger,将配置加入Spring容器,下载并部署Swagger UI,修改index.html中的API地址,最后启动项目并访问美化后的界面进行效果验证。
摘要由CSDN通过智能技术生成

Swagger可视化API,不仅能查看API,还能测试。

第一步:项目中引入相关jar包:

<dependencies>
        ....
        <dependency>
            <groupId>com.mangofactory</groupId>
            <artifactId>swagger-springmvc</artifactId>
            <version>1.0.2</version>
        </dependency>
    <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.5.3</version>
        </dependency>
    </dependencies>

第二步: 添加自定义config文件

package com.tuzki.businessapi.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;

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;

/** 
 *
 * @author Horace 
 * @version 创建时间:2015年12月2日 下午4:03:14 
 *  
 */
@EnableSwagger
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("(/user/login)|(/company/.*)"); //开放多个独立的接口
    }
    
    private ApiInfo apiInfo()
    {
        ApiInfo apiInfo = new ApiInfo(
        	"Title", 
                "Desc",
                "service", 
                "author email<span style="font-family: Arial;">", </span>
                "Licence Type",
                "License URL");
        return apiInfo;
    }
}
 
补充1:看网上的一些资料发现在这个类的头部除了加@EnableSwagger还加了@Configuration,但是我调试的时候报错了,去除之后就好了。该问题我没有去继续找原因,所以如果你们启动的时候这个类报加载的问题的时候可以两种方法都尝试一下。

补充2:代码中includePatterns方法是添加Swagger展示(开放)具体的那些接口。里面是正则表达式,内容是接口的uri。如果是多个独立的接口的话,可以使用()和|(模仿上面代码)就行处理就行了。

第三步:将此配置加入到Spring容器中,如下:

     <mvc:default-servlet-handler/>
     <!--Swagger配置信息  -->
     <bean class="com.tuzki.businessapi.controller.MySwaggerConfig"></bean>
第四步: 在代码中添加相关APIAnnotation,如下:
   @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);
    }
说明: 
其中@ApiOperation和@ApiParam为添加的API相关注解,个参数说明如下: 
@ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response = “接口返回参数类型”, notes = “接口发布说明”;其他参数可参考源码; 
@ApiParam(required = “是否必须参数”, name = “参数名称”, value = “参数具体描述”

第五步:添加Swagger UI配置

GitHub上下载SwaggerUI项目(地址为https://github.com/swagger-api/swagger-ui),将dist下所有内容拷贝到本地项目webapp下面,结果目录如下图所示:


补充1:放到项目中可能swagger-ui.js会报js错误(比如params.in找不到该定义),可以用swagger-ui.min.js(带.min.文件和原文件功能是一样的,只是被压缩过)文件的内容进行替换。

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

第七步:启动项目,访问地址查看效果

http://localhost:8080/business-api/api-docs(business-api为我的项目名) 返回JSON格式的数据,如下


http://localhost:8080/business-api/index.html(business-api为我的项目名)返回经过swagger-ui美化后的界面,如下



参考文献:

1.http://www.mamicode.com/info-detail-471331.html  Swagger与SpringMVC项目整合

2.http://www.java3z.com/cwbwebhome/article/article8/Regex/Java.Regex.Tutorial.html Java正则表达式教程




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值