spring springboot 配置swagger


總結

knife4j 這個玩意兒封裝了swagger ,所以配置更簡單!除了單體,微服務架構也可以使用!

配置文件



@EnableSwagger2
@EnableKnife4j
@Configuration
@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")
public class SwaggerConfig   {
    @Bean
    public Docket createRestApi() {


//        List<Parameter> pars = new ArrayList<Parameter>();
//
//        //構建默認參數
//        ParameterBuilder ticketPar = new ParameterBuilder();
//        ticketPar.name("Content-Type").description("Content-Type")
//                .modelRef(new ModelRef("string")).parameterType("header")
//                .required(true)
//                .defaultValue("application/json").build();
//        pars.add(ticketPar.build());
//        //構建默認請求驗證參數
//        ticketPar = new ParameterBuilder();
//        ticketPar.name("Authorization").description("Authorization")
//                .modelRef(new ModelRef("string")).parameterType("header")
//                .required(true)
//                .defaultValue("111111111111111111111111111111111111111111111111").build();
//        pars.add(ticketPar.build());


        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
                //使用上面的默認參數.build().globalOperationParameters(pars);
    }

    //構建 api文檔的詳細信息函數
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                //頁面標題
                .title("功能測試")
                //創建人
                .contact(new Contact("author", "url", "email"))
                //版本號
                .version("1.0")
                //描述
                .description("API 描述")
                .build();
    }

}

依賴

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <flink.version>1.10.1</flink.version>
        <spring-cloud.version>Hoxton.SR6</spring-cloud.version>
        <spring-boot.version>2.3.9.RELEASE</spring-boot.version>
        <alibaba-cloud.version>2.2.1.RELEASE</alibaba-cloud.version>
        <nacos.version>0.2.2.RELEASE</nacos.version>
        <mysql-connector.version>5.1.37</mysql-connector.version>
        <mybatis-plus.version>3.2.0</mybatis-plus.version>
        <alibaba-fastjson.version>1.2.70</alibaba-fastjson.version>
        <alibaba-nacos-discovery.version>2.2.1.RELEASE</alibaba-nacos-discovery.version>
        <spring-boot-admin.version>2.2.4</spring-boot-admin.version>
        <knife4j.version>2.0.2</knife4j.version>

    </properties>


  <!-- knife4j -->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>${knife4j.version}</version>
        </dependency>

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-micro-spring-boot-starter</artifactId>
            <version>${knife4j.version}</version>
        </dependency>

@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")

這個是主要解決,可以在yml中配置是否啟用swagger的

yml

swagger:
  enable: true

Spring Cloud微服務架構中使用

在Spring Cloud的微服務架構下,每個微服務其實並不需要引入前端的Ui資源,因此在每個微服務的Spring Boot項目下,引入knife4j提供的微服務starter

<dependency>    
  <groupId>com.github.xiaoymin</groupId>    
  <artifactId>knife4j-micro-spring-boot-starter</artifactId>    
  <version>${knife4j.version}</version>
</dependency>

在網關聚合文檔服務下,可以再把前端的ui資源引入

<dependency>    
   <groupId>com.github.xiaoymin</groupId>    
   <artifactId>knife4j-spring-boot-starter</artifactId>    
   <version>${knife4j.version}</version>
</dependency>

上圖

參考

https://blog.csdn.net/xiaoxiaole0313/article/details/104935547

問題

網關搞聚合沒有成功!

但可以網關地址加服務地址訪問文檔 此處網關是8000 hm-demo是8801
http://127.0.0.1:8000/hm-demo1/doc.html#/home


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM