0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Tạo Web Service Đơn Giản với Rust và Axum

Đăng vào 3 tuần trước

• 3 phút đọc

Giới thiệu

Trong bài viết này, chúng ta sẽ khám phá cách xây dựng một web service đơn giản bằng ngôn ngữ lập trình Rust kết hợp với thư viện Axum. Axum là một framework nhẹ và mạnh mẽ giúp tạo ra các ứng dụng HTTP một cách nhanh chóng và hiệu quả.

Mục tiêu bài học

Sau khi hoàn thành bài viết này, bạn sẽ:

  • Nắm vững kiến thức cơ bản về ngôn ngữ lập trình Rust.
  • Hiểu rõ cách hoạt động của Web Service bao gồm các khái niệm như Request, Response, và Basic API.
  • Biết cách kết nối cơ bản với cơ sở dữ liệu, cụ thể là PostgreSQL.
  • Sử dụng SeaORM để tương tác với cơ sở dữ liệu một cách dễ dàng từ Rust.

Hướng dẫn Cài đặt Thư viện Cần thiết

Đầu tiên, bạn cần chỉnh sửa file Cargo.toml trong dự án của mình để thêm các thư viện cần thiết như sau:

toml Copy
[dependencies]
axum = "0.7.5"
bcrypt = "0.15.1"
chrono = { version = "0.4.38", features = ["serde"] }
dotenv = "0.15.0"
serde_json = "1.0.117"
axum-macros = "0.4.1"
jwt = "9.3.0"
serde = { version = "1.0.202", features = ["derive"] }
tokio = { version = "1.37.0", features = ["full"] }

Giải thích các Thư viện:

  • axum: Framework web để phát triển API server.
  • axum-macros: Hỗ trợ viết mã gọn hơn cho Axum, giúp quản lý lỗi trong router.
  • jsonwebtoken: Xác thực và ủy quyền người dùng thông qua JWT token.
  • serdeserde_json: Hỗ trợ cho serialization/deserialization dữ liệu JSON.
  • bcrypt: Băm mật khẩu để bảo mật thông tin người dùng.
  • dotenv: Quản lý biến môi trường từ file .env.
  • tokio: Runtime cho lập trình bất đồng bộ.

Kết nối với SeaORM

Khái niệm Cơ bản về SeaORM

SeaORM là một Object-Relational Mapper (ORM) cho Rust, giúp tương tác với cơ sở dữ liệu quan hệ dễ dàng hơn. Một số khái niệm cơ bản bạn cần biết:

  • Entity: Đại diện cho bảng trong cơ sở dữ liệu.
  • Model: Một instance của Entity tương ứng với một hàng dữ liệu.
  • Schema: Cấu trúc toàn bộ cơ sở dữ liệu, bao gồm các Entity và mối quan hệ của chúng.

Hướng Dẫn Cài Đặt SeaORM

Bổ sung SeaORM vào Cargo.toml như sau:

toml Copy
sea-orm = { version = "0.12.15", features = ["sqlx-postgres", "runtime-tokio-rustls", "macros"] }

CLI để Tạo Migration và Entity

Sử dụng CLI để quản lý schema:

bash Copy
sea-orm-cli migrate init
sea-orm-cli migrate generate <tên migration>
sea-orm-cli migrate status
sea-orm-cli migrate refresh

Cấu trúc Dự án

Một cấu trúc dự án MVC điển hình sẽ bao gồm các thư mục như sau:

Copy
src
├── controllers
├── helpers
├── main.rs
├── middleware
├── models
├── routers
└── server

Kết nối Server với PostgreSQL

Để kết nối với PostgreSQL, tạo một file .env chứa các chuỗi kết nối:

dotenv Copy
DATABASE_URL=postgres://username:password@localhost/database

Tiến hành kết nối trong hàm main():

rust Copy
#[tokio::main]
async fn main() {
    // Kết nối CSDL
}

Tạo Routes với Axum

Sử dụng Axum để định nghĩa các endpoints cho ứng dụng của bạn, bao gồm các chức năng như tạo, đăng nhập, cập nhật, và xóa người dùng.

rust Copy
pub fn user_router(db: Extension<Arc<DatabaseConnection>>) -> Router {
    Router::new()
        .route("/v1/api/create_user", post(create_user).layer(db.clone()))
        .route("/v1/api/login_user", post(login_user).layer(db.clone()))
        // Các route khác
}

Kết luận

Trong bài viết này, bạn đã học cách xây dựng một web service đơn giản bằng Rust và Axum, hiểu rõ về các khái niệm liên quan đến web service và cách tương tác với cơ sở dữ liệu thông qua SeaORM.

Hy vọng bài viết sẽ giúp ích cho bạn trong việc phát triển các ứng dụng web bằng Rust.

Cảm ơn bạn đã đọc!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào