SpringBoot整合Swagger2和全局参数配置

导入两个包

<!--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>

配置

Docket

package com.example.demo.config;

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

import java.util.ArrayList;
import java.util.List;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .pathMapping("/")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
                .paths(PathSelectors.any())
                .build()
                //接口信息
                .apiInfo(apiInfo())
                //全局参数
                .globalOperationParameters(getGlobalOperationParameters())
                //全站统一参数token
                .securitySchemes(authToken())
                ;
    }

    //接口信息配置
    private ApiInfo apiInfo(){
        return  new ApiInfoBuilder()
                .title("秋名山见")
                .description("秋名山见,详细信息......")
                .version("9.0")
                .license("The Apache License")
                .licenseUrl("http://www.baidu.com")
                .build();
    }

    //全局参数配置
    private List<Parameter> getGlobalOperationParameters() {
        List<Parameter> pars = new ArrayList<>();
        ParameterBuilder parameterBuilder = new ParameterBuilder();
        // header query cookie
        parameterBuilder.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false);
        pars.add(parameterBuilder.build());
        parameterBuilder.name("userId").description("用户id").modelRef(new ModelRef("int")).parameterType("query").required(false);
        pars.add(parameterBuilder.build());
        parameterBuilder.name("name").description("用户名").modelRef(new ModelRef("string")).parameterType("cookie").required(false);
        pars.add(parameterBuilder.build());
        return pars;
    }

    //全站统一参数配置,一般是token。
    private  List<ApiKey> authToken() {
        List<ApiKey> arrayList = new ArrayList();
        arrayList.add(new ApiKey("token", "token", "header"));
        return arrayList;
    }
}

启动类要加上EnableSwagger2注解

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@SpringBootApplication
@EnableSwagger2
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

配置效果

全局参数配置效果

在这里插入图片描述

全局统一token配置效果

在这里插入图片描述
在这里插入图片描述

使用示例

代码

package com.example.demo.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@Api(tags = "计算接口")
public class CaculatorController {

    @GetMapping("/div")
    @ResponseBody
    @ApiOperation("除法")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "x", value = "参数x", dataType = "int", paramType = "query"),
            @ApiImplicitParam(name = "y", value = "参数y", dataType = "int", paramType = "query"),
    })
    public int div(int x,int y ){
        return x/y;
    }
}

效果

在这里插入图片描述

发布了17 篇原创文章 · 获赞 1 · 访问量 307

猜你喜欢

转载自blog.csdn.net/weixin_43424932/article/details/104042875
今日推荐