FastAPI là một framework web hiện đại của Python được sử dụng để tạo các dịch vụ API với hiệu năng cao và hỗ trợ bất đồng bộ. Trong bài viết này, bạn sẽ được hướng dẫn cài đặt FastAPI cùng MongoDB trên hệ điều hành Ubuntu 24.04, từ việc cài đặt MongoDB, thiết lập môi trường Python ảo cho đến việc xây dựng API với các thao tác CRUD (Tạo – Đọc – Cập nhật – Xóa).
Yêu Cầu Hệ Thống
Trước khi bắt đầu, hãy đảm bảo bạn có:
- Một hệ thống chạy Ubuntu 24.04.
- Một tài khoản người dùng không phải root có quyền quản trị.
- Kết nối Internet để cài đặt các gói cần thiết.
Cài Đặt MongoDB trên Ubuntu 24.04
Trong phần này, chúng ta sẽ cài đặt MongoDB – cơ sở dữ liệu NoSQL mạnh mẽ được sử dụng làm backend cho FastAPI.
Bước 1: Cập nhật gói và cài đặt tiện ích hỗ trợ
Mở terminal và chạy lệnh:
Bước 2: Thêm GPG key cho MongoDB
Chạy lệnh sau để thêm key:
Bước 3: Thêm repository MongoDB
Thêm repository bằng lệnh:
Bước 4: Cập nhật lại package index và cài đặt MongoDB
Chạy lệnh:
Nhấn Y
khi được yêu cầu xác nhận.
Bước 5: Khởi động và kích hoạt MongoDB
Khởi động dịch vụ mongod
và kích hoạt tự động khi khởi động hệ thống:
Nếu MongoDB đang chạy, bạn có thể kiểm tra bằng cách kết nối vào shell của MongoDB:
Để thoát, nhấn Ctrl+d
.
Thiết Lập Python và Virtual Environment
Sau khi cài đặt MongoDB, chúng ta sẽ thiết lập môi trường Python để xây dựng dự án FastAPI.
Bước 1: Cài đặt Python, pip và venv
Chạy lệnh sau để cài đặt:
Bước 2: Chuyển sang người dùng thông thường
Nếu bạn đang sử dụng tài khoản root, hãy chuyển sang tài khoản người dùng không root:
Bước 3: Tạo thư mục dự án và thiết lập môi trường ảo
Tạo thư mục cho dự án và chuyển vào đó:
Tạo môi trường ảo và kích hoạt nó:
Lưu ý: Sau khi kích hoạt, dấu nhắc lệnh của bạn sẽ thay đổi hiển thị (venv)
. Để thoát môi trường ảo, chỉ cần gõ deactivate
.
Tạo Dự Án FastAPI
Bây giờ, chúng ta sẽ cài đặt FastAPI và xây dựng cấu trúc dự án cơ bản.
Bước 1: Cài đặt FastAPI và Uvicorn
Trong môi trường ảo, chạy:
- FastAPI: Framework chính để xây dựng API.
- Uvicorn: Server ASGI hỗ trợ bất đồng bộ cho FastAPI.
Bước 2: Tạo cấu trúc thư mục dự án
Tạo các thư mục và file cần thiết:
Cấu trúc dự án sẽ như sau:
Bước 3: Cấu hình file server/app.py
Mở file server/app.py
và thêm đoạn mã sau:
- Nhập module FastAPI và khởi tạo đối tượng
app
. - Tạo endpoint root trả về thông báo “Hello FastAPI!”.
Bước 4: Cấu hình file main.py
để chạy ứng dụng
Mở file main.py
và thêm đoạn mã sau:
- Khi chạy file
main.py
, Uvicorn sẽ tải module FastAPI từserver/app.py
. - Ứng dụng sẽ chạy trên địa chỉ
0.0.0.0
và cổng8080
. - Tùy chọn
reload=True
giúp tự động tải lại khi có thay đổi trong code.
Chạy Ứng Dụng FastAPI
Sau khi cấu hình xong, bạn có thể chạy ứng dụng bằng lệnh:
Mở trình duyệt và truy cập vào địa chỉ http://SERVER_IP:8080/
(hoặc http://localhost:8080/
) để xem thông báo “Hello FastAPI!”. Bạn cũng có thể dùng curl
để kiểm tra.
Để truy cập tài liệu API do Swagger UI cung cấp, truy cập:
Kết Nối FastAPI với MongoDB
Để kết nối FastAPI với MongoDB, chúng ta sử dụng thư viện motor – driver MongoDB hỗ trợ asynchronous.
Bước 1: Cài đặt motor
Trong môi trường ảo, chạy:
Bước 2: Cấu hình kết nối trong file server/database.py
Mở file server/database.py
và thêm mã sau:
- Import
AsyncIOMotorClient
từmotor.motor_asyncio
. - Thiết lập biến
MONGODB_HOST
trỏ đến MongoDB trên cổng mặc định. - Kết nối đến database
items
và collectionitem_collection
.
Tạo Model Dữ Liệu với Pydantic
Pydantic giúp định nghĩa schema và kiểm tra dữ liệu. Chúng ta sẽ tạo model cho dữ liệu item.
Bước 1: Cài đặt Pydantic
Chạy lệnh sau:
Bước 2: Cấu hình file server/models/itemModels.py
Mở file server/models/itemModels.py
và thêm đoạn mã sau:
- Model
Item
định nghĩa các trường bắt buộc:name
,category
,stocks
vàprice
(với điều kiện giá > 0). - Model
ItemUpdate
có các trường tùy chọn dùng cho việc cập nhật dữ liệu.
Thực Hiện Các Thao Tác CRUD
Chúng ta sẽ xây dựng các hàm thao tác CRUD trong file server/database.py
để thực hiện các chức năng:
1. Hàm Trợ Giúp Chuyển Đổi Dữ Liệu
Thêm hàm item_helper
để định dạng dữ liệu từ MongoDB:
2. Thêm Item Mới
Thêm hàm add_item
:
3. Lấy Tất Cả Item
Hàm get_items
để truy xuất tất cả dữ liệu:
4. Lấy Item Cụ Thể theo ID
Hàm get_item
để truy xuất item theo ID:
5. Cập Nhật Item
Hàm change_item
cho việc cập nhật item:
6. Xóa Item
Hàm delete_item
cho việc xóa item:
Tạo Các Route cho CRUD Operations
Bây giờ, chúng ta sẽ tạo các route trong file server/routes/item.py
để định nghĩa endpoint cho các thao tác CRUD.
Bước 1: Cấu Hình Route
Mở file server/routes/item.py
và thêm đoạn mã sau:
Bước 2: Route Thêm Item Mới
Bước 3: Route Lấy Tất Cả Item
Bước 4: Route Lấy Chi Tiết Item theo ID
Bước 5: Route Cập Nhật Item
Bước 6: Route Xóa Item
Bước 7: Kết Nối Router với Ứng Dụng
Mở file server/app.py
và thêm dòng sau để tích hợp router:
Như vậy, các endpoint CRUD sẽ được truy cập qua:
- Thêm item mới:
POST /item
- Lấy tất cả item:
GET /item
- Lấy chi tiết item:
GET /item/{id}
- Cập nhật item:
PUT /item/{id}
- Xóa item:
DELETE /item/{id}
Kiểm Tra API CRUD
Bước 1: Chạy Ứng Dụng
Trong terminal, đảm bảo bạn đang ở thư mục dự án với môi trường ảo được kích hoạt, sau đó chạy:
Ứng dụng FastAPI sẽ chạy trên cổng 8080
.
Bước 2: Kiểm Tra Qua Trình Duyệt
Mở trình duyệt và truy cập địa chỉ:
http://SERVER_IP:8080/
để xem thông báo “Hello FastAPI!”.http://SERVER_IP:8080/docs
để xem tài liệu API do Swagger UI cung cấp.
Tại giao diện Swagger, bạn có thể thực hiện các thao tác:
- Thêm item mới: Sử dụng phương thức
POST
với endpoint/item
. - Lấy tất cả item: Sử dụng
GET
tại/item
. - Lấy chi tiết item: Sử dụng
GET
tại/item/{id}
. - Cập nhật item: Sử dụng
PUT
tại/item/{id}
. - Xóa item: Sử dụng
DELETE
tại/item/{id}
.
Kết Luận
Chúc mừng bạn đã hoàn thành hướng dẫn cài đặt FastAPI với MongoDB trên Ubuntu 24.04. Trong bài viết này, bạn đã học được:
- Cài đặt MongoDB và cấu hình repository trên Ubuntu 24.04.
- Thiết lập môi trường Python với virtual environment.
- Xây dựng dự án FastAPI với cấu trúc module rõ ràng.
- Kết nối FastAPI với MongoDB sử dụng thư viện motor.
- Xây dựng mô hình dữ liệu với Pydantic để kiểm tra và xác thực dữ liệu.
- Thực hiện các thao tác CRUD (Tạo – Đọc – Cập nhật – Xóa) cho API.
- Tạo các route cho CRUD operations và kiểm tra qua Swagger UI.
Với những kiến thức trên, bạn có thể dễ dàng mở rộng dự án, tích hợp thêm các tính năng bảo mật, xác thực và xử lý dữ liệu phức tạp cho các ứng dụng API hiện đại. Hãy tiếp tục khám phá và phát triển dự án của bạn với FastAPI và MongoDB!
Nếu bạn có thắc mắc hoặc góp ý, hãy để lại bình luận bên dưới và chia sẻ bài viết này đến cộng đồng. Chúc bạn thành công trong việc xây dựng các ứng dụng API hiệu năng cao!