30 Ngày Chinh Phục FastAPI - [Ngày 1]
1. Giới thiệu về FastAPI:
1.1. FastAPI là gì?
FastAPI là một công cụ giúp bạn tạo API (application programming interface) bằng Python rất nhanh và mạnh mẽ. Nó giúp các lập trình viên xây dựng các ứng dụng kết nối dữ liệu nhanh chóng và dễ dàng.
1.2. Tại sao FastAPI lại đặc biệt?
-
Nhanh và mạnh: FastAPI có thể xử lý hàng nghìn yêu cầu mỗi giây mà không bị chậm.
-
Dễ sử dụng: Các lập trình viên có thể dễ dàng tạo API chỉ bằng vài dòng mã.
-
Kiểm tra dữ liệu tự động: FastAPI sẽ tự động kiểm tra xem dữ liệu bạn gửi có đúng hay không (ví dụ như số điện thoại phải đúng định dạng).
-
Tài liệu tự động: FastAPI tự động tạo tài liệu API (giới thiệu về các tính năng của API) cho bạn, giúp dễ dàng hiểu và thử nghiệm.
1.3. So sánh với các Framework khác
FastAPI vs Flask/Django:
-
Hiệu suất: FastAPI nhanh hơn nhiều so với Flask và Django. Flask khá nhẹ nhàng nhưng không hỗ trợ async tốt như FastAPI. Django mạnh mẽ, nhưng lại hơi nặng nề và yêu cầu nhiều cấu hình hơn.
-
Tính năng: FastAPI tích hợp sẵn nhiều tính năng hiện đại như kiểm tra dữ liệu, tự động tạo tài liệu API, và hỗ trợ async. Còn Flask và Django sẽ cần bạn phải cài thêm thư viện bên ngoài để có những tính năng này.
-
Độ phức tạp: FastAPI yêu cầu ít mã hơn và dễ cấu hình hơn so với Django, nhưng lại mạnh mẽ hơn Flask khi xử lý các tính năng phức tạp như async, xác thực và tài liệu tự động.
1.4. Ví dụ về FastAPI - (chỉ là ví dụ nên bạn đừng quá lo lắng nếu chưa hiểu gì)
Giả sử bạn muốn tạo một ứng dụng web trả về lời chào. Bạn chỉ cần vài dòng mã như thế này:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, World!"}
Khi chạy ứng dụng, bạn chỉ cần mở trình duyệt và truy cập http://localhost:8000/, bạn sẽ thấy kết quả:
{"message": "Hello, World!"}
Ngoài ra, FastAPI còn tự động tạo tài liệu API tại http://localhost:8000/docs, giúp bạn dễ dàng thử nghiệm API mà không cần viết thêm gì.
2. Chuẩn bị môi trường cho FastAPI (Từ giờ là học hành nghiêm túc nhá.
2.1. Cài đặt Python
- Đảm bảo bạn đã cài đặt Python 3.7 trở lên.
- Tải Python từ trang chủ chính thức: https://www.python.org/downloads/
Thật ra bản thân mình thì thích sử dụng pyenv để cài python hơn. Mình thấy có 1 bài hướng dẫn trên Youtube - [ How to Install and Run Multiple Python Versions on Windows 10/11 | pyenv & virtualenv Setup Tutorial] rất hay mà lần nào mình reset máy mới hay chuyển máy khác thì đều lục lại video này để coi cả. Ah, mình nói trước là mình dùng Windows nhá.
Ah mình cũng thấy có 1 bạn trên viblo có chỉ cách cài pyenv cho MacOS, có gì bạn đọc tham khảo tại đây nhé. https://viblo.asia/p/fastapi-phan-1-gioi-thieu-va-setup-moi-truong-WR5JRxjQVGv
2.2. Cài đặt pip
- Pip là trình quản lý gói của Python.
- Kiểm tra xem pip đã được cài đặt chưa bằng lệnh:
pip --version
- Nếu chưa cài pip, sử dụng lệnh:
python -m ensurepip --default-pip
- Cập nhật pip lên phiên bản mới nhất:
python -m pip install --upgrade pip
2.3. Tạo Virtual Environment (môi trường ảo)
- Virtual environment giúp bạn quản lý các gói Python riêng biệt cho từng dự án, tránh xung đột giữa các dự án khác nhau.
Ah có vẻ như là, tính tình của mình bắt đầu khó khăn rồi... Nên là mình bắt buộc các bạn khi tạo một project nào thì phải tạo kèm 1
.venv
(gọi là môi trường ảo) ngay trong project hiện tại luôn nhen. Phải là có dấu.
trước chữ "venv" đấy nhé. 😒
- Tạo môi trường ảo:
python -m venv .venv
Đó thấy hông, đầu tiên CD vào thư mục tên 'FastAPI', sau đó là sẽ tạo một cái '.venv' ngay tại thư mục này, sau đó dùng 'ls' để kiểm tra xem có những gì trong thư mục 'FastAPI' chưa nhé. Tới đây mà còn ông nào bảo là: sao em cũng gõ CD vào terminal/cmd/powershell mà báo lỗi chưa có FastAPI thì toi cũng chịu các ông. Phải tạo thư mục này trước nhen. 🤣
- Kích hoạt môi trường ảo:
- macOS/Linux:
source .venv/bin/activate
- Windows:
.venv\Scripts\activate
- macOS/Linux:
Thấy cái chữ FastAPI nó được đóng trong dấu
()
là kích hoạt.venv
chuẩn rồi đấy. Sau muốn đóng thì chỉ cần gõ thêm dòngdeactivate
là xong. Nhưng mà giờ đang trong bài học nên không có đóng nhen, đợi học hết rồi hẳn đóng ah nhenn. 😎
2.4. Cài đặt FastAPI và Uvicorn
- FastAPI là framework web mà chúng ta sẽ sử dụng.
- Uvicorn là ASGI server giúp chạy ứng dụng FastAPI.
- Cài đặt bằng lệnh:
Ý là có ai thắc mắc gì không? Tại hồi đó toi chạy từng cái như kiểupip install fastapi uvicorn
pip install fastapi
xong enter 1 cái, rồi lạipip install uvicorn
xong enter lần 2,... cứ tiếp tục vậy cho đến khi biết được là có thể viết cách nhau bởi 1 dấu cách cũng được á 🤣. Móe hồi đó mình lúa voải.
Uh, ý là khoe đã cài thư viện xong rồi đó, các bạn chắc là không gặp lỗi gì đâu nhỉ?
3. Chạy thử ứng dụng FastAPI đầu tiên (Học đi đôi với hành)
3.1 Tạo file main.py
- Mở trình soạn thảo code (như VS Code, Sublime Text, v.v.).
- Tạo file mới và đặt tên là
main.py
. - Thêm đoạn mã sau vào file:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
3.2. Chạy ứng dụng
- Mở terminal (command prompt) và di chuyển đến thư mục chứa file
main.py
. - Chạy ứng dụng bằng lệnh sau:
uvicorn main:app --reload
main
: Tên file Python (không có.py
).app
: Tên biến FastAPI instance.--reload
: Tự động reload khi có thay đổi trong code.
3.3. Kiểm tra kết quả
- Mở trình duyệt và truy cập địa chỉ:
http://127.0.0.1:8000 hoặc http://localhost:8000
- Bạn sẽ thấy kết quả trả về:
{"Hello": "World"}
.
- Để xem tài liệu API tự động, truy cập:
http://127.0.0.1:8000/docs
4. Kết bài
Uh, bài học hôm nay chỉ có vậy thôi. Ngày 2 sẽ học: Request, Response, Routing, HTTP Methods.
All rights reserved