# 轻量级Kotlin+Java Web API框架 **Repository Path**: wangxiaokuang/lightweight_java_web_framework ## Basic Information - **Project Name**: 轻量级Kotlin+Java Web API框架 - **Description**: 基于Kotlin编写的的轻量级Kotlin/Java Web API框架 - **Primary Language**: Kotlin - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 0 - **Created**: 2020-08-15 - **Last Updated**: 2022-10-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 轻量级Kotlin/Java Web API框架 ## 一、介绍 基于Kotlin编写的的轻量级Kotlin/Java Web API框架,可根据配置扫描注解,自动创建数据库、数据库表和字段更改,监听HTTP请求,执行相应方法并返回结果 ![image-20201116224738150](image/image-20201116224738150.png) ## 二、开发环境 - macOS Big Sur 11.6 - Kotlin 1.5 - OpenJDK 15.0.2 - MySQL 8.0.26 - [FastJSON](https://mvnrepository.com/artifact/com.alibaba/fastjson/1.2.76) - [quick-media](https://github.com/liuyueyi/quick-media) - [zip4j](https://mvnrepository.com/artifact/net.lingala.zip4j/zip4j) ## 三、使用事例 - [文件共享](https://gitee.com/wangxiaokuang/file-sharing) ## 四、生成KeyStore的方法 生成KeyStore,在命令行里键入: ```shell # 生成有效期为3650天的keystore文件 keytool -genkey -validity 3650 -keysize 2048 -alias we_keystore -keyalg RSA -keystore we.keystore # 生成证书文件 keytool -export -keystore we.keystore -alias we_keystore -rfc -file we.cer ``` 生成Trust KeyStore,在命令行里键入: ```shell # 根据证书生成Trust KeyStore keytool -import -alias we_trust -file we.cer -keystore we_trust.keystore ``` ## 五、使用方法 ~~不用,Spring他不香嘛?~~ - 新建一个普通Java工程 - 将WebEngine打包成jar,然后导入自己的Kotlin/Java工程里 - 在自己的Kotlin/Java工程的main函数中进行设置和启动程序 ```java import tum0r.webengine.main.Program; public class Main { public static void main(String[] args) { Program program = new Program(); program.setScanCommandsPackage("tum0r.command"); program.setScanServersPackage("tum0r.server"); program.start(args); } } ``` 剩下的就和写普通Kotlin/Java工程一样,服务器命令、请求接口、数据库表等均是根据注解自动解析 ### 5.1 注解 - Comamnd:命令注解,被注解的类会被扫描为服务器命令,里面的public方法是具体的命令,在服务器启动时用类似的方法执行,并且在服务器启动时也能执行。但不同类中存在多个同名方法时使用“->”指定某个类下的方法,例如“Folder->setShareFolder share” ![image-20210902143814627](image/image-20210902143814627.png) - Server:接口注解,可以注解在类上和方法上,注:以下所说Action类型为tum0r.webengine.models.core.Action - 注解在类上:此类下所有的public修饰且最后一个参数是Action类型的方法会认为是服务器接口,请求路径为注解上指定的路径加方法名 - 注解在方法上:必须先注解在类上,并且方法最后一个参数是Action类型,表示覆盖类上的Server注解,其中请求路径为空时表示用注解在类上的路径策略 - Param:参数名注解,注解在方法的参数上,对请求参数名进行设定,Kotlin/Java在编译后方法参数名不对,所以使用此注解指定参数名,否则将会按照顺序解析请求,可能引起参数错误 - Table:数据库表注解,被注解的类会被扫描为数据库表,在初始化数据库和生成数据库操作类DB时使用 - TableField:数据库字段的一些属性,例如索引、主键和不创建字段等 ### 5.2 内建命令 查看`javadoc/dokkaJavadocJar/index.html`,其中`tum0r.webengine.commands.default_command`中是所有内建命令 ![image-20210902143849716](image/image-20210902143849716.png) ### 5.3 小工具 - 网卡信息:`tum0r.webengine.models.utils.netcard.NetCard.getNetCards` - 验证码,算数验证码为两个数字进行加减乘运算的结果验证码: - 普通验证码:`tum0r.webengine.models.utils.vercode.NormalVerificationCode` - 算数验证码:`tum0r.webengine.models.utils.vercode.ExpressionVerificationCode` - CSV文件:`tum0r.webengine.models.utils.CSV` - 二维码(QRCode):`tum0r.webengine.models.utils.QRCode` - 执行Shell/DOS命令:`tum0r.webengine.models.utils.Shell` - Zip压缩包:`tum0r.webengine.models.utils.Zip` ## 六、更新记录 - 2021/11/11 - 版本:1.6 - 说明: - 提取Program中的生成代码和配置项 - 修复bug - 2021/10/31 - 版本:1.5.3 - 说明: - 添加一些扩展方法 - 修复bug - 2021/10/17 - 版本:1.5.2 - 说明: - 修复bug - 2021/10/16 - 版本:1.5.1 - 说明: - TimeSpan添加+和-等运算符重载 - Date添加日期迭代 - 2021/10/15 - 版本:1.5 - 说明: - 去除获取系统信息功能 - 添加一些扩展方法 - 修复bug - 2021/10/08 - 版本:1.4.2 - 说明: - 添加线程执行方法 - 代码和注释微改 - 2021/09/14 - 版本:1.4.1 - 说明: - 添加参数检查方法 - 修复数据库查询对象时转换的bug - 2021/09/12 - 版本:1.4 - 说明: - 添加禁止访问IP列表 - 添加获取系统信息(后期考虑独立) - 调整部分包结构 - 2021/09/10 - 版本:1.3.1 - 说明: - ZIP压缩包注释 - 请求响应头添加作者信息 - 2021/09/08 - 版本:1.3 - 说明: - 修复POST请求bug - 添加生成JavaScript的接口请求代码 - 2021/09/06 - 版本:1.2 - 说明: - 请求接口的参数修改为初始化扫描时存下 - 请求接口方法的参数不使用Param注解则请求时解析为默认值 - 2021/09/02 - 版本:1.1 - 说明: - 修复下载文件长时间不点确定会引起请求头为空的报错 - 修改部分逻辑 - 2021/09/01 - 版本:1.0 - 说明: - 使用Kotlin重构,代码行数是之前的一半,更稳定,添加更多扩展方法 - 修改部分包名,调整部分包结构 - Kotlin和Java项目均可使用,在Kotlin项目中使用更方便、更舒服 - 采用扩展和模型中的方法替代工具类 - 修改、删除一些不必要的代码,所有变量、方法均添加文档注释,并能够使用mvn dokka生成相应文档 - 更强大的静态资源解析,更优的上传、下载文件解决方案 - 数据库表创建与刷新更快