| Crates.io | hwhkit |
| lib.rs | hwhkit |
| version | 0.1.2 |
| created_at | 2025-08-24 06:09:55.444645+00 |
| updated_at | 2026-01-12 15:49:09.468882+00 |
| description | 一个用于快速构建 Web 服务的 Rust 工具库 |
| homepage | https://louishwh.tech |
| repository | https://github.com/louishwh/hwhkit-rs |
| max_upload_size | |
| id | 1808115 |
| size | 273,235 |
一个用于快速构建 Web 服务的 Rust 工具库,支持前后端分离和不分离两种架构。
将以下内容添加到你的 Cargo.toml:
[dependencies]
hwhkit = "0.1"
tokio = { version = "1.0", features = ["full"] }
# 可选特性
hwhkit = { version = "0.1", features = ["templates", "jwt", "database", "vector"] }
templates - 启用 Tera 模板引擎支持jwt - 启用 JWT 认证支持database - 启用关系数据库支持(PostgreSQL、MySQL、SQLite)vector - 启用 Qdrant 向量数据库支持full - 启用所有特性use hwhkit::{WebServerBuilder, get, Json, Serialize};
#[derive(Serialize)]
struct ApiResponse {
message: String,
status: String,
}
async fn hello_world() -> Json<ApiResponse> {
Json(ApiResponse {
message: "Hello, World!".to_string(),
status: "success".to_string(),
})
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let app = hwhkit::Router::new()
.route("/", get(hello_world));
let server = WebServerBuilder::new()
.listen("0.0.0.0", 3000)
.cors(vec!["http://localhost:3000".to_string()])
.routes(app)
.build()
.await?;
server.serve().await?;
Ok(())
}
use hwhkit::{WebServerBuilder, get, Html, ArchitectureType};
async fn index() -> Html<&'static str> {
Html("<h1>欢迎使用 HwhKit!</h1>")
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let app = hwhkit::Router::new()
.route("/", get(index));
let server = WebServerBuilder::new()
.listen("0.0.0.0", 8080)
.architecture(ArchitectureType::Full)
.static_files("static", "/static")
.templates("templates", "html")
.routes(app)
.build()
.await?;
server.serve().await?;
Ok(())
}
创建 config.toml:
[server]
host = "0.0.0.0"
port = 3000
architecture = "api"
[middleware.cors]
enabled = true
origins = ["*"]
methods = ["GET", "POST", "PUT", "DELETE"]
headers = ["Content-Type", "Authorization"]
[middleware.jwt]
enabled = true
secret = "your-secret-key"
expires_in = 3600
[middleware.static_files]
enabled = true
dir = "public"
prefix = "/static"
[middleware.logging]
level = "info"
requests = true
然后在代码中使用:
use hwhkit::WebServerBuilder;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let server = WebServerBuilder::new()
.config_from_file("config.toml")
.build()
.await?;
server.serve().await?;
Ok(())
}
适用于构建 RESTful API 服务:
适用于构建传统的全栈 Web 应用:
[middleware.cors]
enabled = true
origins = ["http://localhost:3000", "https://yourdomain.com"]
methods = ["GET", "POST", "PUT", "DELETE"]
headers = ["Content-Type", "Authorization"]
[middleware.jwt]
enabled = true
secret = "your-super-secure-secret-key"
expires_in = 3600 # 1小时
[middleware.static_files]
enabled = true
dir = "public" # 静态文件目录
prefix = "/static" # URL 前缀
[middleware.templates]
enabled = true
dir = "templates" # 模板文件目录
extension = "html" # 模板文件扩展名
[middleware.logging]
level = "info" # trace, debug, info, warn, error
requests = true # 启用请求日志
HwhKit 支持关系数据库和向量数据库:
[dependencies]
hwhkit = { version = "0.1", features = ["database"] }
配置文件:
[database]
enabled = true
db_type = "postgres" # postgres, mysql, sqlite
url = "postgresql://user:password@localhost/myapp"
max_connections = 10
使用示例:
let server = WebServerBuilder::new()
.config_from_file("config.toml")
.build()
.await?;
if let Some(db) = server.database() {
let pool = db.pool();
// 使用 SQLx 执行查询
}
[dependencies]
hwhkit = { version = "0.1", features = ["vector"] }
配置文件:
[qdrant]
enabled = true
url = "http://localhost:6334"
default_collection = "my_collection"
更多详情请查看 DATABASE.md。
查看 examples/ 目录获取完整示例:
api-server.rs - 前后端分离架构示例full-server.rs - 前后端不分离架构示例database-example.rs - 数据库集成示例运行示例:
# API 服务器示例
cargo run --example api-server
# 全栈服务器示例
cargo run --example full-server
# 数据库示例
cargo run --example database-example --features database
运行所有测试:
cargo test
运行特定特性的测试:
cargo test --features "templates,jwt"
欢迎贡献代码!请查看 CONTRIBUTING.md 了解详细信息。
# 克隆仓库
git clone https://github.com/yourusername/hwhkit.git
cd hwhkit
# 安装依赖
cargo build
# 运行测试
cargo test
# 运行示例
cargo run --example api-server
本项目使用 MIT 或 Apache-2.0 许可证。
感谢以下项目为 HwhKit 提供了灵感和基础:
用 ❤️ 和 🦀 制作
如果这个项目对你有帮助,请给我们一个 ⭐