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();
复制代码
评论