mirror of
https://github.com/SOR2171/Ktor_Server_Demo.git
synced 2026-10-23 18:41:10 +08:00
e490ec8259c200d942a3a1828a128cf20b26ea66
Ktor Server Demo
Ktor 3.x 后端项目,采用纯正、原生的 Ktor 方式(Idiomatic Ktor)完全重构实现,与 Springboot4-Vue3 项目功能与数据结构对齐,支持 Vue 3 前端无缝对接。
技术栈
- 语言与构建:Kotlin (
jvmToolchain(21)/25) + Gradle (Kotlin DSL) - Web 框架:Ktor 3.6.0 (Engine: CIO)
- 数据库与 ORM:
- MySQL 8+ (
mysql-connector-j:9.2.0) - HikariCP 连接池 (
5.1.0) - JetBrains Exposed ORM (
0.55.0,包含 Core、JDBC、DAO 与exposed-kotlin-datetime)
- MySQL 8+ (
- 缓存与频控:Redis 6+ + Lettuce Client (
6.3.2.RELEASE) - 消息队列:RabbitMQ 3.8+ (
amqp-client:5.34.0) - 邮件服务:Jakarta Mail (
org.eclipse.angus:jakarta.mail:2.0.4) - 认证与加密:
- Auth0 Java-JWT (
4.4.0) + Ktor Auth JWT (ktor-server-auth-jwt) - BCrypt 密码加密 (
at.favre.lib:bcrypt:0.10.2,与 Spring Security BCrypt 100% 兼容)
- Auth0 Java-JWT (
- 序列化与时间:
kotlinx-serialization-json+kotlinx-datetime - 实时通信:Ktor WebSockets (
ktor-server-websockets) - 跨域与异常拦截:Ktor CORS (
ktor-server-cors) + StatusPages (ktor-server-status-pages)
运行要求
- JDK 21+(推荐 JDK 21 或 JDK 25)
- MySQL 8.0+
- Redis 6.0+
- RabbitMQ 3.8+
快速启动
1. 初始化数据库
导入项目自带的 SQL 架构与初始数据:
mysql -u backend -p kotlin_springboot < src/main/resources/springboot_vue3.sql
默认测试账户:
- 用户名:
test- 密码:
123456- 邮箱:
1234567890@gmail.com
2. 配置应用参数
检查并修改 src/main/resources/application.yaml(或参考 application-example.yaml):
- datasource:数据库连接地址、用户名和密码
- redis:Redis 连接 URL(默认
redis://localhost:6379) - rabbitmq:RabbitMQ 连接凭据与队列名(默认队列
mail) - mail:SMTP 邮件发送账号与授权码
- jwt:JWT 签名秘钥与过期时间
3. 构建与运行
在项目根目录下执行 Gradle 任务:
# 构建项目
./gradlew build
# 运行服务器
./gradlew run
服务启动成功后,默认监听并在控制台输出:
INFO Application - Responding at http://0.0.0.0:8080
接口列表
| 方法 | 路径 | 认证方式 | 说明 |
|---|---|---|---|
POST |
/api/v1/auth/login 或 /api/auth/login |
公开 | 用户名/邮箱与密码登录,返回 Token 与过期时间 |
GET |
/api/v1/auth/ask-code 或 /api/auth/ask-code |
公开 | 发送邮箱验证码(?email=...&type=register) |
POST |
/api/v1/auth/register 或 /api/auth/register |
公开 | 邮箱注册新账号 |
POST |
/api/v1/auth/reset 或 /api/auth/reset |
公开 | 通过验证码重置密码 |
GET |
/api/v1/auth/logout 或 /api/auth/logout |
Bearer Token |
注销 Token 并加入 Redis 黑名单 |
GET |
/api/v1/auth/relogin 或 /api/auth/relogin |
Bearer Token |
刷新并续签 Token |
GET |
/api/test/hello |
公开 | 连通性测试 |
GET |
/api/test/wstoken |
公开 | 签发 WebSocket 一次性握手 Token |
WS |
/ws/test |
公开 | 测试 WebSocket 管道 |
WS |
/ws/v1/example |
?token=... |
校验一次性 Token 后建立连接 |
Description
Languages
Kotlin
100%