Skip to content

jackbereson/graphql-rust

Repository files navigation

GraphQL Rust MongoDB API

API GraphQL đơn giản được xây dựng bằng Rust, với MongoDB làm cơ sở dữ liệu.

Yêu cầu

Cấu hình

Dự án sử dụng file .env để quản lý các biến môi trường. Bạn có thể chỉnh sửa file này để thay đổi cấu hình.

File môi trường

  • .env: Cấu hình cho môi trường development (mặc định)
  • .env.production: Cấu hình cho môi trường production
  • .env.testing: Cấu hình cho môi trường testing

Chọn môi trường

Để chọn môi trường, bạn có thể đặt biến môi trường RUST_ENV:

# Development (mặc định)
RUST_ENV=development cargo run

# Production
RUST_ENV=production cargo run

# Testing
RUST_ENV=testing cargo run

Hoặc bạn có thể sao chép file môi trường tương ứng thành file .env:

# Production
cp .env.production .env

# Testing
cp .env.testing .env

Cài đặt và Chạy

Cách 1: Sử dụng script tự động

./run.sh

Script này sẽ:

  1. Dừng container MongoDB hiện tại (nếu có)
  2. Khởi động container MongoDB mới
  3. Đợi MongoDB khởi động hoàn tất
  4. Biên dịch và chạy ứng dụng GraphQL Rust

Cách 2: Chạy thủ công

  1. Khởi động MongoDB bằng Docker Compose:
docker-compose up -d
  1. Biên dịch và chạy ứng dụng:
cargo run

Sử dụng API GraphQL

Sau khi ứng dụng chạy, bạn có thể truy cập GraphQL Playground tại:

http://localhost:4000/graphql

Các truy vấn mẫu

  1. Hello World:
{
  hello
}
  1. Lấy danh sách người dùng:
{
  users {
    id
    name
    email
    age
  }
}
  1. Lấy người dùng theo ID:
{
  user(id: "ID_của_người_dùng") {
    id
    name
    email
    age
  }
}
  1. Tạo người dùng mới:
mutation {
  createUser(name: "Nguyễn Văn A", email: "nguyenvana@example.com", age: 30) {
    id
    name
    email
    age
  }
}

Cấu hình

Bạn có thể cấu hình kết nối MongoDB qua biến môi trường:

  • MONGODB_URI: URI kết nối đến MongoDB (mặc định: mongodb://localhost:27017)
  • MONGODB_DB: Tên cơ sở dữ liệu (mặc định: graphql_rust_db)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published