SpringBoot global parameter configuration and integration Swagger2

Introducing two packets

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

Configuration

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;
    }
}

Start class to add comment 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);
    }
}

The configuration

The effect of global parameters

Here Insert Picture Description

The effect of global unity token configuration

Here Insert Picture Description
Here Insert Picture Description

Examples of Use

Code

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;
    }
}

effect

Here Insert Picture Description

Published 17 original articles · won praise 1 · views 307

Guess you like

Origin blog.csdn.net/weixin_43424932/article/details/104042875
Recommended