• Swagger整合到项目


    1、依赖

    父模块进行版本控制

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.zjazn</groupId>
        <artifactId>gopoint</artifactId>
        <version>1.0-SNAPSHOT</version>
        <parent>
            <artifactId>spring-boot-starter-parent</artifactId>
            <groupId>org.springframework.boot</groupId>
            <version>2.1.3.RELEASE</version>
        </parent>
        <modules>
            <module>point-service</module>
            <module>point-common</module>
        </modules>
        <packaging>pom</packaging>
    
    
    
        <!--统一管理jar包版本-->
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
    
       <dependencyManagement>
           <!--子模块继承之后,提供作用:锁定版本+子module不用groupId和version-->
           <dependencies>
               ....
    
    
               <!--swagger-->
               <dependency>
                   <groupId>io.springfox</groupId>
                   <artifactId>springfox-swagger2</artifactId>
                   <version>2.7.0</version>
               </dependency>
               <!--swagger ui-->
               <dependency>
                   <groupId>io.springfox</groupId>
                   <artifactId>springfox-swagger-ui</artifactId>
                   <version>2.7.0</version>
               </dependency>
           </dependencies>
       </dependencyManagement>
    
    
    
    
    </project>

    可以直接写入以下依赖或者间接依赖(写在common,然后项目再依赖common)

    <!--Swagger-UI API文档生产工具-->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
            </dependency>
    
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
            </dependency>

    2、写配置类

    SwaggerConfig.java  :你可以将这个配置类放在common中
    package com.zjazn.gopoint.common;
    
    import com.google.common.base.Predicates;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.HttpHeaders;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.*;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spi.service.contexts.SecurityContext;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    import javax.annotation.Resource;
    import java.util.Collections;
    import java.util.List;
    
    @Configuration
    @EnableSwagger2 //swagger注解
    @RestController
    public class SwaggerConfig {
        @Resource
        private RestTemplate restTemplate;
        //添加一个组
        @Bean
        public Docket webApiConfig(){
            return new Docket(DocumentationType.SWAGGER_2)
                    //配置组名,是否雇用这个组, 组的信息配置ApiInfo,其它配置
                    .groupName("groupA").enable(true).apiInfo(webApiInfo()).select()
                    //指定扫描的路径:any()扫描全部   none() 不扫描  basePackage() 指定要扫描的包
                    .apis(RequestHandlerSelectors.any())
                    //过滤哪个路径:paths() 过滤什么路径
                    .paths(Predicates.not(PathSelectors.regex("/error.*")))
                    .build();
    
        }
    
        private ApiInfo webApiInfo(){
            return new ApiInfoBuilder()
                    .title("小社区API文档")
                    .description("编码人:小庄,本文档描述了微服务接口定义")
                    .version("1.0")
                    .contact(new Contact("小庄的BLog", "https://www.cnblogs.com/zjazn/", "2119299531@qq.com"))
                    .build();
        }
    
        /*
        * Swagger注释的使用:
        *       Model:  类:@ApiModel("用户实体类")   属性: @ApiModelProperty("用户名")    ,但Controller 返回的这个Model时,会在SwaggerUI的Model上显示。
        *
        *       Controller:  接口方法上:  @ApiOperation("根据ID获取用户信息")
        *
        *
        * */
    
    
    
    
    
    }

    3、在启动类加入

    @EnableSwagger2 注解


    然后访问:http://127.0.0.1:ip/swagger-ui.html

    4、解决  SpringBoot使用Swagger2出现Unable to infer base url.

    可能由以下几个原因造成:
    1. 需要在SpringBoot的启动Application前面加上 @EnableSwagger2注解;
    2. 可能是由于使用了Spring Security 影响:尝试使用以下Spring Security配置解决:
    import  org.springframework.context.annotation.Configuration;
    import  org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import  org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    @Configuration
    class  SecurityConfig  extends  WebSecurityConfigurerAdapter  {
        private  static  final  String[]  AUTH_WHITELIST  =  {
                // -- swagger ui
                "/swagger-resources/**",
                "/swagger-ui.html",
                "/v2/api-docs",
                "/webjars/**"
        };
        @Override
        protected  void  configure(HttpSecurity http)  throws  Exception  {
            http.authorizeRequests()
                    .antMatchers(AUTH_WHITELIST).permitAll()
                    .antMatchers("/**/*").denyAll();
        }
    }
  • 相关阅读:
    一月十三号学习日报
    一月十四号学习日报
    一月六号学习日报
    ARP欺骗
    一月十一号学习日报
    vscode文件名重叠
    vue : 无法加载文件 C:Users1111111AppDataRoaming pmvue.ps1,因为在此系统禁止运行脚本
    成绩录入和查询
    node搭建服务器
    class和id的区别
  • 原文地址:https://www.cnblogs.com/zhuangjie/p/16373779.html
Copyright © 2020-2023  润新知