当前位置:   article > 正文

Springboot 2.3.4 整合swagger3 支持导出离线文档 再也不需要以后手动编写接口文档了_swagger 离线导出

swagger 离线导出

欢迎大家进群,一起探讨学习

欢迎大家进群,一起讨论学习

微信公众号,每天给大家提供技术干货

在这里插入图片描述

博主技术笔记


博主开源微服架构前后端分离技术博客项目源码地址,欢迎各位star


一:Springboot 2.3.4 整合swagger3 支持导出离线文档 再也不需要以后手动编写接口文档了

一、引用mavem依赖

	<!--引入swagger3 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

二、swagger 配置

代码如下(示例):

package com.yoostar.config;

import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import springfox.documentation.builders.*;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

import java.util.ArrayList;
import java.util.List;

/**
 * swagger 配置
 *
 * @author bright
 */
@Configuration
@EnableOpenApi
public class Swagger3Config {

    /**
     * swagger3的配置文件
     */
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                //.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build()
                .globalRequestParameters(getGlobalRequestParameters())
                .globalResponses(HttpMethod.GET, getGlobalResponseMessage())
                .globalResponses(HttpMethod.POST, getGlobalResponseMessage())
                .globalResponses(HttpMethod.DELETE, getGlobalResponseMessage())
                .globalResponses(HttpMethod.PUT, getGlobalResponseMessage());
    }

    /**
     * 构建 api文档的详细信息函数,注意这里的注解引用的是哪个
     */
    private ApiInfo apiInfo() {
        // 获取工程名称
        String projectName = System.getProperty("user.dir");
        return new ApiInfoBuilder()
                .title(projectName.substring(projectName.lastIndexOf("\\") + 1) + " API接口文档")
                .contact(new Contact("bright", "", "694475668@qq.com"))
                .version("1.0")
                .description("API文档")
                .build();
    }

    /**
     * 生成全局通用参数
     *
     * @return
     */

    private List<RequestParameter> getGlobalRequestParameters() {
        List<RequestParameter> parameters = new ArrayList<>();
        parameters.add(new RequestParameterBuilder()
                .name("x-access-token")
                .description("令牌")
                .required(false)
                .in(ParameterType.HEADER)
                .build());
        parameters.add(new RequestParameterBuilder()
                .name("Equipment-Type")
                .description("产品类型")
                .required(false)
                .in(ParameterType.HEADER)
                .build());
        return parameters;
    }

    /**
     * 生成通用响应信息
     *
     * @return
     */
    private List<Response> getGlobalResponseMessage() {
        List<Response> responseList = new ArrayList<>();
        responseList.add(new ResponseBuilder().code("404").description("找不到资源").build());
        return responseList;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91

3.启动程序

在这里插入图片描述

4.访问

http://127.0.0.1:8085/swagger-ui/index.html
在这里插入图片描述

5.注意事项

1,生产环境中,要关闭swagger

application.properties中配置:

  springfox.documentation.swagger-ui.enabled=false
  
  knife4j.enable: true #停用Swagger文档
  • 1
  • 2
  • 3

二:集成增强文档knife4j

1.在pom.xml中增加knife4j的相关依赖;


 		<!--Knife4j-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>3.0.2</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在Swagger2Config中增加一个@EnableKnife4j注解,该注解可以开启knife4j的增强功能

在这里插入图片描述

运行我们的SpringBoot应用,访问API文档地址即可查看:http://localhost:8088/doc.html

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
首先在Authorize功能中添加登录返回的Token;

之后在每个接口中就可以看到已经在请求头中携带了Token信息。
在这里插入图片描述

离线文档
knife4j支持导出离线文档,方便发送给别人,支持Markdown格式。

直接选择文档管理->离线文档功能,然后选择下载Markdown即可;
在这里插入图片描述

我们来查看下导出的Markdown离线文档,还是很详细的。
在这里插入图片描述

全局参数
knife4j支持临时设置全局参数,支持两种类型query(表单)、header(请求头)。

比如我们想要在所有请求头中加入一个参数appType来区分是android还是ios调用,可以在全局参数中添加;
在这里插入图片描述

此时再调用接口时,就会包含appType这个请求头了。
在这里插入图片描述

忽略参数属性
有时候我们创建和修改的接口会使用同一个对象作为请求参数,但是我们创建的时候并不需要id,而修改的时候会需要id,此时我们可以忽略id这个属性。

比如这里的创建商品接口,id、商品数量、商品评论数量都可以让后台接口生成无需传递,可以使用knife4j提供的@ApiOperationSupport注解来忽略这些属性;
在这里插入图片描述

各位大佬关注下

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/285814?site
推荐阅读
相关标签
  

闽ICP备14008679号