SpringBoot+Swagger整合API

Swagger:整合规范的api,有界面的操作,测试

 

1.在pom.xml加入swagger依赖

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

 

2.在application.yml开启swagger

#引入swagger
swagger:
  enable: true

  

3.配置SwaggerConfiguration.java

注意:@Value("${swagger2.basePackage:com.spingcloud.serviceconsumer.controller}") 添加扫描的api入口

@Configuration
@EnableSwagger2
public class SwaggerConfiguration  {

    @Value("${swagger2.basePackage:com.spingcloud.serviceconsumer.controller}")
    private String swagger2BasePackage;
    @Value("${swagger2.title:系统API文档}")
    private String swagger2Title;
    @Value("${swagger2.api.version:2.0}")
    private String apiVersion;


    @Bean
    public Docket createRestApi() {

        //添加query参数start
        ParameterBuilder tokenPar = new ParameterBuilder();
        List<Parameter> pars = new ArrayList<Parameter>();
//        tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("query").required(true).build();
        pars.add(tokenPar.build());
        //添加query参数end




        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select().apis(RequestHandlerSelectors.basePackage(swagger2BasePackage))
                .paths(PathSelectors.any())
                .build()
//                .globalOperationParameters(pars)
                //添加验证
//                .securitySchemes(securitySchemes())
//                .securityContexts(securityContexts())
                //添加验证
                ;



    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title(swagger2Title)
                .version(apiVersion)
                .build();
    }



    private List<ApiKey> securitySchemes() {
        List<ApiKey> apiKeyList= new ArrayList();
        apiKeyList.add(new ApiKey("token", "令牌", "header"));
        return apiKeyList;
    }

    private List<SecurityContext> securityContexts() {
        List<SecurityContext> securityContexts=new ArrayList<>();
        securityContexts.add(
                SecurityContext.builder()
                        .securityReferences(defaultAuth())
                        .forPaths(PathSelectors.regex("^(?!auth).*$"))
                        .build());
        return securityContexts;
    }

    List<SecurityReference> defaultAuth() {
        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
        authorizationScopes[0] = authorizationScope;
        List<SecurityReference> securityReferences=new ArrayList<>();
        securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
        return securityReferences;
    }

}
View Code

相关文章: