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:8083connect to rongapi.cn[44:05][INFO] 连接Domain服务器 server=rongapi.cnconfig 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();
复制代码
评论