基于springboot+maven的swagger2安装教程

7 篇文章 0 订阅
4 篇文章 1 订阅

在前后端分离的模式下,一个清晰地api文档是必不可少的。而swagger就是一个非常容易搭建的api文档,只需要通过简单的配置就可以自动生成api文档。

 

▍前提条件

首先需要新建一个springboot+maven的项目。

 

▍大致安装流程

1、在pom.xml注入依赖;

2、新建swagger2配置文件并配置相关信息;

3、在controller中配置接口信息。

4、启动项目并查看api文档。

 

▍注入依赖

打开pom.xml文件,加入以下两个依赖项,然后点击右键:Maven=》Download S… AND D…,下载两项依赖,保证这两项依赖的信息不为红色即完成。

<!--添加Swagger依赖 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
</dependency>
<!--添加Swagger-UI依赖 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.7.0</version>
</dependency>

 

▍配置swagger2

新建config包(新建在跟controller、service等包同等位置即可),在config包下新建SwaggerConfig.java文件,导入以下配置,并根据自身实际修改相关内容即可。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;


// 标记配置类
@Configuration
// 开启在线接口文档
@EnableSwagger2
public class Swagger2Config {

    /**
     * @Description:swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
     */
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
                // 配置到项目的controller包
                .apis(RequestHandlerSelectors.basePackage("com.xxx.controller"))
                .paths(PathSelectors.any()).build();
    }

    /**
     * @Description: 构建api文档的信息
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("xxx项目文档标题")
                .description("xxx项目文档描述")
                .contact(new Contact("xxx开发者称呼", "xxx.com网站", "xxx@qq.com邮箱"))
                // 定义版本号
                .version("版本号:xx.x").build();
    }
}

 

▍在controller类中添加配置信息

在controller类中参考如下信息配置:

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@Controller
@RequestMapping("/contact")
// value:controller名称;tags:controller标签
@Api(value = "联系人接口", tags = "联系人接口")
public class BaseInfoController {
    @Autowired
    private BaseInfoService baseInfoService;

    @Autowired
    private HostHolder hostHolder;
    
    // value:接口名称;notes:接口描述
    @ApiOperation(value = "联系人列表", notes = "获取联系人列表")
    // 有多个参数时,需要使用@ApiImplicitParams,只有一个参数使用@ApiImplicitParam即可,没有参数不需要配置
    @ApiImplicitParams({
            @ApiImplicitParam(name="pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
            @ApiImplicitParam(name="pageSize", value = "每页的数据量", dataType = "int", paramType = "query", required = true)
    })
    // 使用相应的请求mapping
    @GetMapping("/list")
    public List<BaseInfo> getContactList(@RequestParam("pageNum") Integer pageNum,
                                         @RequestParam("pageSize") Integer pageSize){
        Integer userId = hostHolder.getUser().getId();
        List<BaseInfo> list = baseInfoService.getContactListByUserId(userId, pageNum, pageSize);
        return list;
    }
}

效果演示:

上面的配置只用到了部分的swagger2配置组件,更多组件的应用参考:https://www.jianshu.com/p/f30e0c646c63

 

▍启动项目并访问swagger-ui

本项目在application.properties中配置的访问端口为8080,所以在浏览器中访问以下页面即可。

http://localhost:8080/swagger-ui.html

 

▍报错

如果按照上述流程完整执行后,却无法访问到页面,并且在后台报以下错误,请浏览解决方案。

No mapping for GET /swagger-ui.html

 

▍解决方案

在config包中新建一个WebMvcConfig.java文件,并将下面代码复制到该文件中,然后重新启动项目,即可访问到页面。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {

    @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/");
    }
}

 

▍备选解决方案

其实在摸索出上面的解决方案之前,我还尝试过以下两种解决方案,但是都没有成功。如果你在尝试了上面的解决方案后没有生效,可以尝试一下以下两种备选方案,但是成功概率不高。

 

▍解决方案参考链接

我的解决方案参考了以下网址:

https://www.cnblogs.com/xingzc/p/8656088.html

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个基于SpringBoot+vue的爱心捐赠系统可能的目录结构: ``` - src - main - java - com.example.donation - config // 配置类 - CorsConfig.java // 跨域配置 - JwtAuthenticationTokenFilter.java // JWT认证过滤器 - SwaggerConfig.java // Swagger配置 - controller // 控制器 - DonationController.java // 捐赠相关控制器 - UserController.java // 用户相关控制器 - dao // 数据访问层 - DonationDao.java // 捐赠相关数据访问接口 - UserDao.java // 用户相关数据访问接口 - entity // 实体类 - Donation.java // 捐赠实体类 - User.java // 用户实体类 - service // 服务层 - DonationService.java // 捐赠相关服务接口 - UserService.java // 用户相关服务接口 - impl // 服务实现类 - DonationServiceImpl.java // 捐赠相关服务实现类 - UserServiceImpl.java // 用户相关服务实现类 - util // 工具类 - JwtTokenUtil.java // JWT工具类 - DonationApplication.java // SpringBoot应用启动类 - resources - mapper // Mybatis映射文件 - DonationMapper.xml // 捐赠相关映射文件 - UserMapper.xml // 用户相关映射文件 - static // 静态资源 - css // 样式文件 - js // JS文件 - images // 图片文件 - templates // Thymeleaf模板 - index.html // 系统入口页面 - application.yml // 应用配置文件 - test // 测试目录 - pom.xml // Maven项目配置文件 - README.md // 项目说明文档 ``` 以上是一个基本的目录结构,具体的实现方式可能会根据实际需求而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值