文档章节

springMVC集成springfox和swagger实现接口文档管理

织梦之魂
 织梦之魂
发布于 2017/04/28 14:51
字数 619
阅读 1288
收藏 0

在项目开发过程中,编写接口文档时常对开发人员来说是一件耗时费力的事情。因为不论是先写文档或者是后期补充文档都是一件令人烦恼的事情。

但是,自从swagger UI诞生之后,这件事情将变得简单。在开发人员编写程序的过程中,不必在劳心费神接口api的编写,因为现在是在开发的同时完成了文档编写工作,仅仅几个注解便可以搞定。下面就来看看在spring项目中使用swagger的示例。

一、以下使用已经集成swagger ui静态资源的springfox组件。具体pom配置如下:

<dependency>

<groupId>com.mangofactory</groupId>

<artifactId>swagger-springmvc</artifactId>

<version>1.0.2</version>

</dependency>

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger2</artifactId>

<version>2.6.1</version>

</dependency>

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger-ui</artifactId>

<version>2.6.1</version>

</dependency>

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version>2.8.7</version>

</dependency>

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-annotations</artifactId>

<version>2.8.5</version>

</dependency>

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-core</artifactId>

<version>2.8.7</version>

</dependency>

二、编写swagger的配置类,具体如下:


package com.mark.util;



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;

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

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.EnableWebMvc;

import springfox.documentation.spi.DocumentationType;

import springfox.documentation.spring.web.plugins.Docket;

import springfox.documentation.swagger2.annotations.EnableSwagger2;





/**

* swagger配置文件

*

* @author maliqiang

* @version 1.0

* @create 2017-03-14

*/

@Configuration

//@EnableWebMvc

@EnableSwagger2

public class SwaggerConfig {



@Bean

public Docket myApi() {

return new Docket(DocumentationType.SWAGGER_2);

}

}

三、配置spring配置文件,添加swagger配置。具体如下:

<!-- Enables swgger ui -->

<mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/"/>

<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/>

四、编写测试controller类,如:

1.Controller类

package com.mark.controller;

import com.mangofactory.swagger.annotations.ApiIgnore;
import com.mark.util.RspMsg;
import com.wordnik.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

/**
 * 用户相关操作controller
 *
 * @author maliqiang
 * @version 1.0
 * @create 2017-04-27
 */
@RestController
//@RequestMapping("user")
public class UserController {
    @ResponseBody
    @RequestMapping("/login")
    @ApiOperation(value = "用户登录")
    public RspMsg login(){
        RspMsg rsp = new RspMsg();
        return rsp;
    }

    @ApiIgnore//生成接口文档时忽略
    @RequestMapping("/info")
    public ModelAndView swaggerInfo() {
        String url="redirect:swagger/swagger-ui.html";
        return new ModelAndView(url);
    }
}

2.辅助类

package com.mark.util;

/**
 * @author maliqiang
 * @version 1.0
 * @create 2017-04-27
 */
public class RspMsg {
    private Integer code;
    private String msg;
    private Object data;
    private boolean flag;

    public RspMsg(Integer code, String msg, Object data, boolean flag) {
        this.code = code;
        this.msg = msg;
        this.data = data;
        this.flag = flag;
    }

    public RspMsg() {
        this.code = 0000;
        this.msg = "操作成功";
        this.flag = true;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public boolean isFlag() {
        return flag;
    }

    public void setFlag(boolean flag) {
        this.flag = flag;
    }
}

然后,启动项目。访问地址:localhost:8080/项目名/swagger-ui.html即可看到项目的api文档。当然,实际使用时应清楚的标注方法适用的范围:post、get、delete等。

访问界面如下:

© 著作权归作者所有

共有 人打赏支持
织梦之魂
粉丝 3
博文 24
码字总数 17825
作品 0
南京
程序员
私信 提问
加载中

评论(3)

织梦之魂
织梦之魂

引用来自“小皇子”的评论

我页面上显示不出来接口 提示这个No operations defined in spec! 是哪里出了问题啊
你用的是不是纯swagger的3.X版本,那个我也出不来。以前单独用2.X版本就可以。这个博文使用的是spring-fox集成的。
九派软件
九派软件

引用来自“小皇子”的评论

我页面上显示不出来接口 提示这个No operations defined in spec! 是哪里出了问题啊
找到原因了没啊?
小皇子
小皇子
我页面上显示不出来接口 提示这个No operations defined in spec! 是哪里出了问题啊
Spring Boot集成Swagger简易教程

Swagger   Swagger号称是史上最流行的、最好用的API接口文档构建工具,它支持多种语言包括Java在内,本文仅关注如何使用Spring Boot来集成Swagger,更多关于Swagger的介绍可以查看以下几个...

mario阿东
2018/06/26
0
0
swagger + spring mvc 实现rest 接口代码与api 同步维护,更新

概述 swagger 是一个规范和完整的框架,是用来生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密...

巡山
2016/06/06
346
0
Restful形式接口文档生成之Swagger与SpringMVC整合手记

文章转载地址:http://javatech.wang/index.php/archives/74/ 笔者目前正在搭建一套API服务框架,考虑到客户端能够更方便的调用API服务(这里说的更方便是指避免不厌其烦地解说各接口需要的参...

北极之北
2016/04/01
11.8K
8
Springfox与SpringMvc集成实现接口文档化

准备环境 一个web服务器(我使用的是tomcat、当然nginx都可以) eclipse开发环境使用SpringMvc框架的源码(我使用springfox官网提供的demo) 下载swagger-ui源码 实现目的 eclipse中启动后台项目...

zzuqiang
2016/11/24
182
0
API管理工具Swagger介绍及Springfox原理分析

swagger是一个API框架,号称世界上最流行的API工具。它提供了API管理的全套解决方案,比如API在线编辑器,API UI展示界面,代码生成器等诸多功能。 如果想引入swagger进行API管理。目前 spri...

中间件小哥
2018/06/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java单例模式学习记录

在项目开发中经常能遇见的设计模式就是单例模式了,而实现的方式最常见的有两种:饿汉和饱汉(懒汉)。由于日常接触较多而研究的不够深入,导致面试的时候被询问到后有点没底,这里记录一下学习...

JerryLin123
昨天
3
0
VSCODE 无法调试

VSCODE 无法调试 可以运行 可能的原因: GCC 的参数忘了加 -g

shzwork
昨天
4
0
理解去中心化 稳定币 DAI

随着摩根大通推出JPM Coin 稳定币,可以预见稳定币将成为区块链落地的一大助推器。 坦白来讲,对于一个程序员的我来讲(不懂一点专业经济和金融),理解DAI的机制,真的有一点复杂。耐心看完...

Tiny熊
昨天
4
0
5.线程实现

用于线程实现的Python模块 Python线程有时称为轻量级进程,因为线程比进程占用的内存少得多。 线程允许一次执行多个任务。 在Python中,以下两个模块在一个程序中实现线程 - _thread 模块 th...

Eappo_Geng
昨天
6
0
ServiceLoader

创建一个接口文件在resources资源目录下创建META-INF/services文件夹在services文件夹中创建文件,以接口全名命名创建接口实现类 内容me.zzp.ar.d.PostgreSQLDialectme.zzp.ar.d.Hype...

Cobbage
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部