# rust_base_web **Repository Path**: yymy/rust_base_web ## Basic Information - **Project Name**: rust_base_web - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-19 - **Last Updated**: 2026-03-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # axum + MySQL 生产级拆分示例 功能:登录 + 用户增删改查(CRUD)。 ## 目录结构 ``` src/ main.rs # 应用入口 config.rs # 环境变量与配置 error.rs # 统一错误与响应 state.rs # 全局状态 routes/ # 路由注册 handlers/ # HTTP 处理器 services/ # 业务逻辑 repositories/ # 数据访问 models/ # DTO/实体 security/ # 密码哈希 migrations/ # SQL 迁移 ``` ## 数据库迁移 `migrations/0001_create_users.sql`: ```sql CREATE TABLE users ( id BIGINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(64) NOT NULL UNIQUE, password_hash VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ``` ## 环境变量 ``` DATABASE_URL=mysql://root:password@127.0.0.1:3306/demo BIND_ADDR=0.0.0.0:3000 ``` ## 运行方式 ```sh export DATABASE_URL="mysql://root:password@127.0.0.1:3306/demo" export BIND_ADDR="0.0.0.0:3000" cargo run ``` ## 接口示例 创建用户: ```sh curl -X POST http://127.0.0.1:3000/users \ -H 'Content-Type: application/json' \ -d '{"username":"alice","password":"123456"}' ``` 登录: ```sh curl -X POST http://127.0.0.1:3000/login \ -H 'Content-Type: application/json' \ -d '{"username":"alice","password":"123456"}' ``` 查询列表: ```sh curl http://127.0.0.1:3000/users ``` 查询单个: ```sh curl http://127.0.0.1:3000/users/1 ``` 更新用户: ```sh curl -X PUT http://127.0.0.1:3000/users/1 \ -H 'Content-Type: application/json' \ -d '{"username":"alice2","password":"abc123"}' ``` 删除用户: ```sh curl -X DELETE http://127.0.0.1:3000/users/1 ``` ## 安全说明 - 密码已改为 Argon2 哈希存储(示例中仍返回用户信息但不返回哈希)。 - 登录接口只做最小校验,生产建议加入 JWT/Session、限流、防爆破。