springboot集成swagger2

springboot集成swagger2
没接触swagger2之前,我们常规的做法就是创建一份 RESTful API 文档来提供给前端(我常用的是yapi,当然还有好多在线文档。。。)缺点这里就不再说了,今天主要说一下swagger的使用!

swagger2的优点:

1.使用简单,方便上手。
2.支持在线接口测试,不依赖第三方工具;
3.接口文档在线自动生成,文档随接口变动实时更新,节省维护成本;

springboot集成swagger2

1.pom.xml中进入maven依赖:

<!--swagger2-->
        <dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.9.2</version>
		</dependency>
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>2.9.2</version>
		</dependency>
		<dependency>           
            <groupId>io.swagger</groupId>            
              <artifactId>swagger-annotations</artifactId>           
                <version>1.5.21</version>       
       </dependency>        
        <dependency>            
            <groupId>io.swagger</groupId>            
            <artifactId>swagger-models</artifactId>            
           <version>1.5.21</version>        
       </dependency>
		

之前使用2.7.2版本,会有一个问题:SpringBoot集成swagger(之后正常使用,后面优化增加@Api注解,tags用的中文描述,之后发现无法展开只能用右边的集体展开后收起按钮操作。

2.创建swagger2配置类:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
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;

/**
 *  swagger-ui配置类
 *    访问地址 http://localhost:1333/swagger-ui.html
 *   (踩坑:1.如使用swagger,启动时需在启动类加上@EnableSwagger2
 *          2.使用@Value()获取配置文件值时,类上需加@Component,标明这个类需要在spring管理之下@Value才会生效)
 */

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Value("${swagger2.enable}")
    private boolean enable;
    @Bean
    public Docket createRestApi() {
        List<Parameter> parameters = new ArrayList<>();
        ParameterBuilder parameterBuilder = new ParameterBuilder();
        parameterBuilder.name("Access-Token").description("swagger测试调用(模拟用户进行认证凭证)").modelRef(new ModelRef("String"))
                .parameterType("header").required(false);
        parameters.add(parameterBuilder.build());
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
        //为当前包路径[RequestHandlerSelectors.any()所有的controller,RequestHandlerSelectors.basePackage()指定包下的controller]
               // .apis(RequestHandlerSelectors.any())        .apis(RequestHandlerSelectors.basePackage("com.shiro.springbootshiro.controller"))
                .paths(PathSelectors.any())
                .build()
                .enable(enable)//设置开关
                .globalOperationParameters(parameters);//加入token头
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                //大标题
                .title("springboot+shiro+redis+swagger2.0接口文档")
                //描述
                .description("SwaggerApi接口文档")
                //版本
                .version("1.0")
                .contact(new Contact("姓名","test","xx@qq.com"))
                .build();
    }

}

3.允许访问Swagger ui静态页面:

/**
 * Created by xf on 2020/03/12.
 * SpringBoot之整合Swagger2不显示文档页面问题处理:
 * 这个问题是资源映射不到导致,swagger-ui.html是在jar包里面,SpringBoot自动配置也找不到这个页面。
 */
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
 
    /**
     * 配置swagger-ui 访问静态资源
     * */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        /**
         * SpringBoot自动配置本身并不会把/swagger-ui.html
         * 这个路径映射到对应的目录META-INF/resources/下面
         * 采用WebMvcConfigurerAdapter将swagger的静态文件进行发布;
         */
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");

        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
        //将所有/static/** 访问都映射到classpath:/static/ 目录下
        registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX +"/static/");
        super.addResourceHandlers(registry);
    }
}

4.controller层代码编写:
在这里插入图片描述
官网摘抄几个controller常用的注解:

1、Api:修饰整个类,描述Controller的作用

2、ApiOperation:描述一个类的一个方法,或者说一个接口

3、ApiParam:单个参数描述

4、ApiModel:用对象来接收参数

5、ApiProperty:用对象接收参数时,描述对象的一个字段

6、ApiResponse:HTTP响应其中1个描述

7、ApiResponses:HTTP响应整体描述

8、ApiIgnore:使用该注解忽略这个API

9、ApiError :发生错误返回的信息

10、ApiImplicitParam:描述一个请求参数,可以配置参数的中文含义,还可以给参数设置默认值

11、ApiImplicitParams:描述由多个 @ApiImplicitParam 注解的参数组成的请求参数列表

5.启动 SpringBoot 应用
(*记着在启动类上加注解@EnableSwagger2)
启动成功后,访问http://localhost:8080/swagger-ui.html

在这里插入图片描述
6.录入请求信息,点击右下角的 “Try it out!”按钮,完成一次请求调用!
在这里插入图片描述
加油!少年!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值