API管理:smart-doc 与 新版 torna 集成

使用 docker-compose 搭建 torna 环境
torna 介绍


项目地址:https://gitee.com/durcframework/torna

torna 是一个企业接口文档解决方案,目标是让文档管理变得更加方便、快捷。Torna采用团队协作的方式管理和维护项目API文档,将不同形式的文档纳入进来,形成一个统一的维护方式。Torna弥补了传统文档生成工具(如swagger)的不如之处,在保持原有功能的前提下丰富并增强了一些实用的功能。

smart-doc 介绍


smart-doc 是一个彻底无侵入的 java Rest Api 文档生成工具。让用户的代码保持整洁一直是 smart-doc 的核心理念。使用过 swagger 的人就知道,为了生成文档,一个接口上要写上许许多多的注解,不仅繁杂,而且侵入式程度很高,对 swagger 有很强的依赖,而 smart-doc 则是要简洁许多,不需要写注解,不想用了,去掉依赖即可,非常方便。

准备工作
准备环境
准备一台 linux 虚拟机,安装 docker 环境以及 docker-compose,也使用 windows 电脑上的 wsl 环境,去 docker 的官网安装 win 版 docker,本文使用的环境为 win 版docker。

拉取项目
项目地址:

https://gitee.com/durcframework/torna/tree/master/torna-docker-compose

git地址:

https://gitee.com/durcframework/torna.git

使用 git 拉取项目之后的文件目录如下:

配置文件内容介绍
docker-compose.yml

总共是编排了两个容器,一个是 mysql,一个是 torna ,与源文件相比,我开放了 3306 端口,并且设置了 mysql 的数据目录挂载。

version:"3"
services:mysql:build:context:./dockerfile:Dockerfilecontainer_name:mysqlports:-3306:3306#开放外部连接端口,若是本机也安装了 mysql,注意端口冲突问题environment:TZ:Asia/ShanghaiMYSQL_ROOT_PASSWORD:123456# 可以自定义密码,但是不要忘了修改 application.properties 中的数据库连接MYSQL_ROOT_HOST:'%'command:--default-authentication-plugin=mysql_native_password--character-set-server=utf8mb4--collation-server=utf8mb4_general_ci--lower_case_table_names=1volumes:-./my.cnf:/etc/my.cnf-./data:/var/lib/mysql# 设置 mysql 数据外部挂载目录networks:-torna-netrestart:alwaystorna:image:tanghc2020/torna:latestcontainer_name:tornaports:-7700:7700depends_on:-mysql# 建立连接links:-mysqlvolumes:-./application.properties:/torna/config/application.properties# 挂载项目的配置文件environment:-TZ=Asia/Shanghai-JAVA_OPTS=-server-Xmx512m-Xms512m-Djava.awt.headless=truenetworks:-torna-netrestart:always
networks:torna-net:

Dockerfile

FROM mysql:5.7
#定义会被容器自动执行的目录
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d
#定义初始化sql文件
ENV INIT_SQL mysql.sql
#把要执行的sql文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个sql
COPY $INIT_SQL $AUTO_RUN_DIR
#给执行文件增加可执行权限
RUN chmod a+x $AUTO_RUN_DIR/$INIT_SQL

application.properties

# 项目的端口
server.port=7700# 数据库连接信息,因为 torna 使用 links 命令连接了 mysql 容器,所以可以使用 mysql 容器名代替 ip 地址
mysql.host=mysql:3306
mysql.schema=torna
mysql.username=root
mysql.password=123456

my.cnf

mysql 的一些常规配置

[mysqld]
user=mysql
default-storage-engine=INNODB
#character-set-server=utf8
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
[client]
#utf8mb4字符集可以存储emoji表情字符
#default-character-set=utf8
default-character-set=utf8mb4
[mysql]
#default-character-set=utf8
default-character-set=utf8mb4

torna 项目的建库建表 sql,这里不做赘述。

构建项目
拉取所需镜像
mysql

docker pull mysql:5.7


torna

# 获取最新的 torna
docker pull tanghc2020/torna


编排容器
在 docker-compose.yml 文件的路径下执行:

# 编排容器
docker-compose up -d# 查看编排容器运行情况
docker-compose ps


可以看到两个项目都已成功运行。

可能遇到的问题
若是有容器一直处于 restart 的状态或是访问 torna 页面失败,则可以使用命令:

docker logs -f mysql 
# 或者
docker logs -f torna
# 查看具体的问题


我遇到的问题是,docker-compose up -d 命令编排之后,mysql 容器并未自动执行 mysql.sql 建表 sql,导致 torna 启动失败,错误为 mysql 中没有找到 torna 数据库。

我随即使用数据库连接工具连接 mysql,手动建立 torna 数据库,并执行 mysql.sql 文件。再使用 docker restart torna 重启 torna 容器。

访问 torna
部署在本机的话,在浏览器输入:127.0.0.1:7700 ,即可访问项目,初始账户为: admin@torna.cn 密码为:123456

登录之后:

创建空间之后,再创建项目,在项目中新建模块

点击新建模块,再点击 OpenAPI,token 是推送接口文档的关键

smart-doc 与 springboot 结合


maven 引入依赖
仔细阅读每个配置项的注释,然后根据自己项目情况去配置

<plugin><groupId>com.github.shalousun</groupId><artifactId>smart-doc-maven-plugin</artifactId><version>[最新版本]</version><configuration><!--指定生成文档的使用的配置文件,配置文件放在自己的项目中--><configFile>./src/main/resources/smart-doc.json</configFile><!--指定项目名称--><projectName>测试</projectName><!--smart-doc实现自动分析依赖树加载第三方依赖的源码,如果一些框架依赖库加载不到导致报错,这时请使用excludes排除掉--><excludes><!--格式为:groupId:artifactId;参考如下--><!--也可以支持正则式如:com.alibaba:.* --><exclude>com.alibaba:fastjson</exclude></excludes><!--includes配置用于配置加载外部依赖源码,配置后插件会按照配置项加载外部源代码而不是自动加载所有,因此使用时需要注意--><!--smart-doc能自动分析依赖树加载所有依赖源码,原则上会影响文档构建效率,因此你可以使用includes来让插件加载你配置的组件--><includes><!--格式为:groupId:artifactId;参考如下--><!--也可以支持正则式如:com.alibaba:.* --><include>com.alibaba:fastjson</include></includes></configuration><executions><execution><!--如果不需要在执行编译时启动smart-doc,则将phase注释掉--><phase>compile</phase><goals><!--smart-doc提供了html、openapi、markdown等goal,可按需配置--><goal>html</goal></goals></execution></executions>
</plugin>
smart-doc.json

在 resource 目录下新建 smart-doc.json 文件,具体的配置请访问:https://smart-doc-group.github.io/#/zh-cn/diy/config

我的配置如下:

{"serverUrl": "http://127.0.0.1:3333/workflow","isStrict": false,"allInOne": true,"outPath": "src/main/resources/static/doc","coverOld": true,"createDebugPage": true,"style": "xt256","packageFilters": "com.product6.controller.*","appToken": "08a91f662cae459a91238fafaa6e371c", // 注意 appToken 为 OpenAPI 中的 token"openUrl": "http://127.0.0.1:7700/api", // openUrl 为 OpenAPI 中的请求路径"md5EncryptedHtmlName": true,"projectName": "workflow","debugEnvName": "测试环境","replace": true,"debugEnvUrl": "http://127.0.0.1","tornaDebug": true,"inlineEnum": true,"skipTransientField": true,"errorCodeDictionaries": [{"title": "title","enumClassName": "com.product6.result.CommonCode","codeField": "code","descField": "message"}]
}
执行推送

使用 smart-doc 插件进行推送

推送完成之后,可以在 torna 上对应的模块看到推送的接口

可能遇到的问题
推送中遇到 Data too long for column 'example' at row 1 ....,定位到是 mysql 中 doc_param 表中 example 字段长度太短,原来为 varchar(1024),我将其修改为 text 类型

总结


依赖于网上的教程,不注意去看官网

网上的教程有一定时效性,像是 torna 新版本只需要 appToken 认证即可,旧的版本则需要 appKey,appToken,secret 三个值,依据网上的教程,我死活找不到 开放用户的选项,也就无法获取 appKey,``appToken,secret` 这三个值,最后求助于官方群,也感谢作者的耐心解答。

一般官网上的教程都是最新的,优先去查阅官网。

mvn 打包的问题

使用的项目是一个 maven 多模块的项目,当打包一个模块总是出现 找不到符号 这个问题,我将其依赖项执行了 install 命令,再次打包依旧是这个问题,不管我怎么清缓存,或者是去本地仓库删除依赖,又或者是更新 maven 的版本,这个问题始终存在,最终在网上找到了一个帖子,执行了 mvn idea:idea,莫名奇妙的编译完成了,只能用神奇来说明新版的 maven 感觉编译速度有所加快。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/236585.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

发现一个好用的搜索引擎【非凡搜索】无广告

# 非凡搜索&#xff0c;小众、无广告、简洁。号称“不收集、不传播任何个人信息”。 非凡搜索 作为一个程序员&#xff0c;经常需要搜索一下技术资料&#xff0c;在国内大部分搜索引擎中搜索时&#xff0c;往往夹带各种广告或目的不明确的结果&#xff0c;这个搜索引擎无疑是一…

chrome vue devTools安装

安装好后如下图所示&#xff1a; 一&#xff1a;下载vue devTools 下载链接https://download.csdn.net/download/weixin_44659458/13192207?spm1001.2101.3001.6661.1&utm_mediumdistribute.pc_relevant_t0.none-task-download-2%7Edefault%7ECTRLIST%7EPaid-1-13192207…

Clickhouse Join

ClickHouse中的Hash Join, Parallel Hash Join, Grace Hash Join https://www.cnblogs.com/abclife/p/17579883.html https://clickhouse.com/blog/clickhouse-fully-supports-joins-full-sort-partial-merge-part3 总结 本文描述并比较了ClickHouse中基于内存哈希表的3种连接…

申请免费的域名SSL证书

1.&#xff0c;选择SSL证书提供商 首先&#xff0c;您需要选择一个提供免费SSL证书的可信赖服务提供商。比如JoySSL就提供了永久免费版本的SSL证书。 2&#xff0c; 注册账户并登录 在选择了JoySSL&#xff0c;您需要在网站上注册一个账户。完成注册后&#xff0c;使用您的账…

uniapp微信小程序实现地图展示控件

最终实现效果&#xff1a; 地图上展示控件&#xff0c;并可以点击。 目录 一、前言 二、在地图上展示控件信息 点击后可进行绘制面图形 1.使用cover-view将控件在地图上展示 2.设置控件样式&#xff0c;使用好看的图标 3.控件绑定点击事件 一、前言 原本使用的是control…

Linux:服务器管理工具宝塔(bt)安装教程

一、简介 bt宝塔Linux面板是提升运维效率的服务器管理软件&#xff0c;支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等多项服务的管理功能 二、安装 使用 SSH 连接工具&#xff0c;如堡塔SSH终端连接到您的 Linux 服务器后&#xff0c;挂载磁盘&#xff0c;根据系统执…

【EasyExcel】导出excel并支持自定义设置数据行背景颜色等

需求背景&#xff1a; 根据查询条件将列表数据导出&#xff0c;并筛选出满足某个条件的数据&#xff0c;将满足条件的数据的背景颜色设置成黄色。 &#xff08;本文例子如&#xff1a;name出现的次数大于等于2&#xff0c;将相关数据背景颜色都设置为黄色&#xff09; …

智慧机场视频监控系统方案:AI智能助力机场智慧运营

一、方案背景 随着人们生活物质水平的上升&#xff0c;人们对机场的需求也日益增多&#xff0c;在民航新建、迁建、扩建机场项目猛增的同时&#xff0c;也需同步配备相应的安防监控系统&#xff0c;以满足民航机场安全管理要求和机场运营业务的高速发展。 二、方案概述 智慧机…

C++学习之路(十四)C++ 用Qt5实现一个工具箱(增加一个Base64图片编码预览功能)- 示例代码拆分讲解

上篇文章&#xff0c;我们用 Qt5 实现了在小工具箱中添加了《Base64加解密功能》功能。为了继续丰富我们的工具箱&#xff0c;今天我们就再增加一个平时经常用到的功能吧&#xff0c;就是「 Base64图片编码预览 」功能。下面我们就来看看如何来规划开发一个这样的小功能并且添加…

把数组中各元素都转换为小写或大写numpy.char.lower()numpy.char.upper()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 把数组中各元素 都转换为小写或大写 numpy.char.lower() numpy.char.upper() [太阳]选择题 请问np.char.lower(arr1)的结果是&#xff1a; import numpy as np a[A,b] print("【显示】a&…

38 - MySQL中InnoDB的知识点

InnoDB 存储引擎作为我们最常用到的存储引擎之一&#xff0c;充分熟悉它的的实现和运行原理&#xff0c;有助于我们更好地创建和维护数据库表。 1、InnoDB 体系架构 InnoDB 主要包括了内存池、后台线程以及存储文件。内存池又是由多个内存块组成的&#xff0c;主要包括缓存磁…

MySQL核心知识点整理大全1-笔记

MySQL 是一种流行的关系型数据库管理系统&#xff0c;它是以C和C语言编写的&#xff0c;最初是由瑞典公司MySQL AB开发的&#xff0c;现在是由Oracle公司维护和支持。MySQL是开源软件&#xff0c;可在Windows、Linux、Mac OS、FreeBSD等各种操作系统上运行。MySQL的主要特点是速…