SpringBoot工程创建Swagger文档并自动生成调用代码

412 阅读3分钟

Java后台如何更好的提供暴露接口的信息?今天教大家一种借助Swagger文档进行调用代码生成的方法。

首先介绍一下Swagger是什么? 简单的说,Swagger可以为你的API自动生成文档,比如我们的工程打开之后就生成了下面的界面:

这个界面上可以查看所有的API路径和参数等信息,这个界面的所有数据可以用json导出,导出的文件就是OpenAPI标准。我们今天的代码生成就要基于OpenAPI文档来完成。

1)添加依赖

我们要为后台Java仓库增加Swagger功能,首先要添加对应的依赖,支持Swagger的方式有很多种,我们选用的是knife4j

Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍!
Knife4j的前身是swagger-bootstrap-ui,为了契合微服务的架构发展,由于原来swagger-bootstrap-ui采用的是后端Java代码+前端Ui混合打包的方式,在微服务架构下显的很臃肿,因此项目正式更名为knife4j

在pom.xml添加依赖如下:

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

然后增加一个配置文件

package com.bajiafan.config;

import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfiguration {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)      // 选择swagger2版本
                .apiInfo(apiInfo())         //定义api文档汇总信息
                .select()
                .apis(RequestHandlerSelectors
                        .basePackage("com.baijiafan.controller"))  // 指定生成api文档的包
                .paths(PathSelectors.any())     // 指定所有路径
                .build()
                ;
    }


    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("文档标题")     // 文档标题
                .contact(new Contact("name", "url", "mail"))   //联系人信息
                .description("描述")      //描述
                .version("0.1")     //文档版本号
                .termsOfServiceUrl("http://localhost:8080")     //网站地址,仅在需要特别指定的时候才需要配置
                .build();
    }
}

详细信息可以自行修改。官方文档可见knife4j官方站点

完成后,我们就可以重启服务了,重启之后,就可以在htttp://localhost:8080/doc.html,注意这个端口不是上面的termsOfServiceUrl配置的端口,是你Java服务的端口。

2)生成前端代码

当我们可以正常的查看到doc.html之后,就可以进行手工的查阅,调用等操作了。如果要分享给前端和生成前端调用代码,我们需要用到下面的工具:百家饭OpenAPI工具

3) 分享API DOC

首先我们在百家饭OpenAPI工具注册一个免费账户,注册完成后,下载客户端并登录,然后我们就可以再开一个终端,运行下面的命令。

openapi.exe proxy localhost:8083

这个命令会给我们一个网址,比如我这边就是

PS D:\workspace\baijiafan\core\bin_> .\openapi.exe proxy localhost:8083
connect to  rongapi.cn
[44:05][INFO]    连接Domain服务器       server=rongapi.cn
config is D:\workspace\baijiafan\core\bin_\certs\rongapi.cn\1_8_默认客户端证书
[44:05][INFO]    创建上传OpenAPI定义
[44:05][INFO]    开始接收请求
[44:05][INFO]    创建成功,点击可查看分享数据源  url=https://rongapi.cn/api/detail/42
[44:05][INFO]    开始接收请求

点击之后,这个页面有个二维码可以直接分享给前端,查看需要提取码,不用担心泄露问题。

4)生成前端代码

前端查看如果没有问题,就可以直接生成代码了,生成代码也需要安装百家饭OpenAPI工具,安装后直接运行

openapi.exe code -y 42 js

执行完成后就可以在执行目录下面看见生成的代码啦

包含了所有api的调用文件,我们可以直接把这个目录拷贝到前端的src下面,就可以引用和调用相关接口了。比如

const axios = require("./axios");

axios.getDataGetauthdata();