原先的界面:

ip:port//swagger-ui.html

升级swagger2到knife4j

改造后:界面美观,支持搜索

ip:port/doc.html

升级swagger2到knife4j

 

在pom.xml文件中把原来swagger的去掉,加入knife4j依赖

<!-- swagger2 -->
<!--<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.7.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
</dependency>-->

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

在Swagger2 类中加入 @EnableKnife4j 注解

以下仅供参考

package XXX;

import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import com.google.common.collect.Lists;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.ResponseEntity;
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.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
@EnableKnife4j
public class Swagger2 {
    @Bean
    public Docket appApi() {
        ParameterBuilder ticketPar = new ParameterBuilder();
        List<Parameter> pars = new ArrayList<Parameter>();  
       ticketPar.name("appId").description("家居给享系列分配一个应用ID")
       .modelRef(new ModelRef("string")).parameterType("header") 
       .required(false).build(); //header中的ticket参数非必填,传空也可以
       pars.add(ticketPar.build());    //根据每个方法名也知道当前方法在设置什么参数
       
        return new Docket(DocumentationType.SWAGGER_2).groupName("app(智享home)").genericModelSubstitutes(ResponseEntity.class)
                .apiInfo(appApiInfo()) 
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.gemdale.iot.business.app.controller"))//扫描的包
                //.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any()) 
//                .paths(or(regex("/user/.*")))//过滤
                .build()
                .globalOperationParameters(pars);
    }

    @Bean
    public Docket prjAppApi() {
        // 每个接口都共有的参数
        ParameterBuilder param1 = new ParameterBuilder();
        param1.name("sign").description("签名").modelRef(new ModelRef("string")).parameterType("query").required(false).build();
        ParameterBuilder param2 = new ParameterBuilder();
        param2.name("sessionId").description("sessionId").modelRef(new ModelRef("string")).parameterType("query").required(false).build();
        ParameterBuilder param3 = new ParameterBuilder();
        param3.name("userId").description("userId").modelRef(new ModelRef("integer")).parameterType("query").required(false).build();
        ParameterBuilder param4 = new ParameterBuilder();//参数非必填,传空也可以
        param4.name("appVersion").description("app版本").modelRef(new ModelRef("string")).parameterType("header").required(false).build();

        List<Parameter> aParameters = Lists.newArrayList();
        aParameters.add(param1.build());
        aParameters.add(param2.build());
        aParameters.add(param3.build());
        aParameters.add(param4.build());

        return new Docket(DocumentationType.SWAGGER_2).groupName("prjApp(工程版app)").genericModelSubstitutes(ResponseEntity.class)
                .globalOperationParameters(aParameters)
                .apiInfo(prjAppApiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.gemdale.iot.prj.controller"))//扫描的包
//                .apis(RequestHandlerSelectors.any()) // 对所有api进行监控
                //.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
//                .paths(or(regex("/user/.*")))//过滤
                .build();
    }
    
    private ApiInfo appApiInfo() {
        return new ApiInfoBuilder()
                .title("xxx接口文档-APP")
                .description("该文档主要提供APP 端的接口 \r\n\n"
                        + "请求服务:http//10.34.4.47:8777/cloud/  (测试服务器不支持https)\r\n\n"
                        + "返回:  \r\n\n"
                        + "ReturnBody<T> {\"code\":\"标识码\",\"msg\":\"描述\",data{ json字符串(对象)  } \r\n\n"
                        + "")
                .contact(new springfox.documentation.service.Contact("xxx业务后台开发组", null, null))
                .version("1.0.0")
                .build();
    }


    private ApiInfo prjAppApiInfo() {
        return new ApiInfoBuilder()
                .title("xxx接口文档-工程版APP")
                .description("该文档主要提供工程版APP端的接口 \r\n\n"
                        + "请求服务:http//10.34.4.47:18777/  \r\n\n"
                        + "返回:  \r\n\n"
                        + "ReturnBody<T> {\"code\":\"标识码\",\"msg\":\"描述\",data{ json字符串(对象)  } \r\n\n"
                        + "")
                .contact(new springfox.documentation.service.Contact("xxxx业务后台开发组", null, null))
                .version("1.0.0")
                .build();
    }   
}

 

OK,重启打开页面试试看

 

 

 

 

 

 

相关文章:

  • 2021-12-05
  • 2022-03-07
  • 2022-02-09
  • 2021-10-08
  • 2021-09-15
  • 2021-08-12
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-28
  • 2021-07-14
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案