springboot+swagger2

springboot+swagger2

小序

新公司的第二个项目,是一个配置管理终端机(比如:自动售卖机,银行取款机)的web项目,之前写过一个分模块的springboot框架,就在那个框架基础上进行了改造。改造后的框架可以说能满足普通项目的所有需求,大家可以循环利用哈。后续我会附上摘出来的框架源码,和大家一起学习进步。今天主要是说一下springboot配置在线接口文档swagger2。

添加jar

在你的maven管理的项目的pom.xml中添加

 1 <dependency>
 2             <groupId>io.springfox</groupId>
 3             <artifactId>springfox-swagger2</artifactId>
 4             <version>2.2.2</version>
 5         </dependency>
 6         <dependency>
 7             <groupId>io.springfox</groupId>
 8             <artifactId>springfox-swagger-ui</artifactId>
 9             <version>2.2.2</version>
10         </dependency>

添加swagger2的配置类

 1 import org.springframework.context.annotation.Bean;
 2 import org.springframework.context.annotation.Configuration;
 3
 4 import springfox.documentation.builders.ApiInfoBuilder;
 5 import springfox.documentation.builders.PathSelectors;
 6 import springfox.documentation.builders.RequestHandlerSelectors;
 7 import springfox.documentation.service.ApiInfo;
 8 import springfox.documentation.spi.DocumentationType;
 9 import springfox.documentation.spring.web.plugins.Docket;
10 import springfox.documentation.swagger2.annotations.EnableSwagger2;
11
12 /**
13  * Swagger2配置类 在与spring boot集成时,放在与Application.java同级的目录下。
14  * 通过@Configuration注解,让Spring来加载该类配置。 再通过@EnableSwagger2注解来启用Swagger2。
15  */
16 @Configuration
17 @EnableSwagger2
18 public class Swagger2 {
19
20     /**
21      * 创建API应用 apiInfo() 增加API相关信息
22      * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
23      * 本例采用指定扫描的包路径来定义指定要建立API的目录。
24      *
25      * @return
26      */
27     @Bean
28     public Docket createRestApi() {
29         return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
30                 .apis(RequestHandlerSelectors.basePackage("com.11.22.33.controller"))//此处改为你的接口所在的包路径
31                 .paths(PathSelectors.any()).build();
32     }
33
34     /**
35      * 创建该API的基本信息(这些基本信息会展现在文档页面中) 访问地址:http://项目实际地址/swagger-ui.html
36      *
37      * @return
38      */
39     private ApiInfo apiInfo() {
40         return new ApiInfoBuilder().title("title").description("description").contact("作者")
41                 .version("1.0").build();//此处改为你自己的项目名称,描述,作者,版本
42     }
43 }

controller添加swagger2注解

  • 例一

多个参数的话,添加多个@ApiImplicitParam即可,逗号分隔。

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@Api(value = "DeviceProductController|终端设备下的产品的相关接口")
@RequestMapping(RequestUrl.DEVEICE_PRODUCT_LIST)
@RestController
public class DeviceProductController {
    @Autowired
    private DeviceProductService deviceProductService;

    @ApiOperation(value="根据设备编号获取产品列表")
    @ApiImplicitParams({
        @ApiImplicitParam(paramType="query", name = "deviceId", value = "设备编号", required = true, dataType = "String")
    })
    @RequestMapping(method = RequestMethod.GET)
    String deveiceInfos(String  deviceId, HttpServletRequest request) {
        String result = deviceProductService.getDeviceProductList(deviceId);
        return result;
    }
}

  • 例二

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@Api(value = "DeviceInfoController|终端设备的相关接口")
@RequestMapping(RequestUrl.DEVEICE_INFO_LIST)
@RestController
public class DeviceInfoController {
    @Autowired
    private DeviceInfoService deveiceInfoService;

    @ApiOperation(value="分页获取终端列表datatable的数据格式")
    @RequestMapping(method = RequestMethod.GET)
    String deveiceInfos(@ModelAttribute Gpage page, HttpServletRequest request) {
        String result = deveiceInfoService.deveiceInfos(page, request);
        return result;
    }
}
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@ApiModel(value="分页对象类型")
@Data
public class Gpage{

    @ApiModelProperty(value="每页显示个数" ,required=true)
    private int length = 10;
    @ApiModelProperty(value="开始坐标" ,required=true)
    private int start;
}

在线接口文档访问路径

我本地启用的是8081端口,所以访问路径是http://localhost:8081/swagger-ui.html

遇到的坑

  • 如果你配置了spring.resources.static-locations,那你就需要把swagger-ui.html也要加进去

解决办法:新建类MyWebAppConfigurer,添加如下代码即可

 1 import org.springframework.context.annotation.Configuration;
 2 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 3 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
 4
 5 @Configuration
 6 public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
 7     /**
 8      * 添加swagger-ui.html
 9      */
10     @Override
11     public void addResourceHandlers(ResourceHandlerRegistry registry) {
12          registry.addResourceHandler("swagger-ui.html")
13          .addResourceLocations("classpath:/META-INF/resources/");
14          registry.addResourceHandler("/webjars*")
15          .addResourceLocations("classpath:/META-INF/resources/webjars/");
16         super.addResourceHandlers(registry);
17     }
18 }
  • 如果你配置了拦截器或者过滤器,也要过滤掉swagger的相关路径
时间: 2024-10-29 19:07:22

springboot+swagger2的相关文章

springboot+swagger2笔记

参考 http://www.conglin-site.com/document/html/1494763157.html 1. pom <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.6.1</version> </dependency> <depende

springboot+swagger2案例

1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <

Springboot+swagger2的接口文档开发

一.创建一个SpringBoot项目 1. 2. 3. 4. 把web里的web选中,SQL里选择自己需要的,点击next 二.创建各项所需的controller,configure等 1. 项目布局 2. 引入的包 <!-- swagger2所用的包 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId>

SpringBoot + Swagger2 自动生成API接口文档

spring-boot作为当前最为流行的Java web开发脚手架,相信越来越多的开发者会使用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于移动端.在实际开发过程中,这些接口还要提供给开发测试进行相关的白盒测试,那么势必存在如何在多人协作中共享和及时更新API开发接口文档的问题. 假如你已经对传统的wiki文档共享方式所带来的弊端深恶痛绝,那么尝试一下Swagger2 方式,一定会让你有不一样的开发体验: 功能丰富 :支持多种注解,自动生成接

spring-boot集成Springfox-Swagger2

import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documenta

Spring-boot 之 Swagger2(打造不一样的api)

一.Swagger2是什么? Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件. Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步.Swagger 让部署管理和使用功能强大的API从未如此简单. 官网:http://swagger.io/ GitHub地址:https://gith

SpringBoot+rest接口+swagger2生成API文档+validator+mybatis+aop+国际化

代码地址:JillWen_SpringBootDemo mybatis 1. 添加依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.version}</version> </dependency> &

基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建

前言 最近做回后台开发,重新抓起以前学过的SSM(Spring+Spring MVC+Mybatis),但是发现配置实在过于复杂,好多东西配置起来麻烦,虽然最终是配置出来了,但是还是感觉开发速度跟不上,本来打算切换到jfianl,但是后来发现需要用的几个框架不支持jfianl,如Swagger2(根据代码中的注解生成接口文档和测试页面,非常的方便):同时我也不愿意放弃SpringMVC强大的验证参数模块,jfianl中好像只能手动验证(当然我对jfianl只处于简单的开发,并不是特别熟),而Sp

springboot集成swagger2构建RESTful API文档

在开发过程中,有时候我们需要不停的测试接口,自测,或者交由测试测试接口,我们需要构建一个文档,都是单独写,太麻烦了,现在使用springboot集成swagger2来构建RESTful API文档,可以在访问接口上,直接添加注释 先介绍一下开发环境: jdk版本是1.8 springboot的版本是1.4.1 开发工具为 intellij idea 我们先引入swagger2的jar包,pom文件引入依赖如下: <dependency> <groupId>io.springfox&