RoboTech-RS
RoboTech-RS is a backend service toolkit written in Rust. This project provides commonly used tools for RESTful controller layer and business logic layer.
Project Structure
This project organizes functional modules through Rust's feature flags mechanism:
apifeature (enabled by default): Contains API interfaces and data transfer objects, providing a unified response object (RO) structuresvrfeature: Implements server-side business logic, including controller (ctrl), service (svc), and constant (cst) modules
Tech Stack
- Rust 2024 edition
- Actix-web as Web framework (in svr feature)
- SeaORM as database ORM (in svr feature)
- Utoipa for OpenAPI documentation generation (in api feature)
- Serde for serialization/deserialization (in api feature)
- Chrono for time processing (in api feature)
Feature Flags
This project uses feature flags to control dependencies and functionality:
api(default): Enables API-related features, including response objects (RO) and data transfersvr: Enables server-side features, including controllers, services, and database operations
The api feature is enabled by default. To use server-side features, you can enable both features:
[]
= "0.3.2"
= ["api", "svr"]
API Response Format
This project adopts a unified response format, where all API responses follow this structure:
API Response Fields Explanation:
result: Response result (Success, IllegalArgument, Warn, Fail)msg: Response messagetimestamp: Timestampextra: Optional extra datadetail: Optional detailed informationcode: Optional business code
Quick Start
Prerequisites
- Rust 1.70 or higher
- PostgreSQL database (if using SeaORM)
Build Project
# Build with default features (api)
# Build with all features
Run Service
# Run service (requires svr feature)
Modules
ro: Response objects for API responses with unified formatcst: Constants used across the applicationctrl: Controllers handling HTTP requestssvc: Business logic servicessettings: Configuration managementweb_server: Web server implementation
License
This project is licensed under the MIT License - see the LICENSE file for details.