Hướng Dẫn Chi Tiết Về Routing Trong FastAPI - Ngày 2
Giới thiệu về FastAPI và Routing
FastAPI là một framework web mạnh mẽ, dễ sử dụng, đặc biệt ưu việt trong việc xây dựng APIs. Trong bài viết này, chúng ta sẽ tìm hiểu về quá trình routing trong FastAPI, cách định nghĩa các đường dẫn (endpoints) cùng với các phương thức HTTP, từ đó giúp bạn xây dựng các API có cấu trúc rõ ràng và dễ bảo trì.
1. Routing Trong FastAPI Là Gì?
Routing là quá trình xác định các đường dẫn (endpoints) trong một API và kết hợp chúng với các hàm xử lý (route handlers). Khi một client gửi yêu cầu đến server, FastAPI sẽ dựa vào route được định nghĩa để thực hiện xử lý. Ví dụ, nếu một client gửi GET request đến đường dẫn /
, FastAPI sẽ tìm và thực thi hàm xử lý tương ứng.
2. Cách Định Nghĩa Routing Trong FastAPI
FastAPI sử dụng decorators để định nghĩa các route cho các phương thức HTTP, chẳng hạn như GET, POST, PUT, và DELETE. Những decorators này cho phép lập trình viên chỉ định loại phương thức HTTP và kết nối nó với các hàm xử lý.
Ví Dụ Định Nghĩa Các Route:
python
from fastapi import FastAPI
app = FastAPI()
# Route cho GET request tại đường dẫn "/"
@app.get("/")
def read_root():
return {"Hello": "World"}
# Route cho POST request tại đường dẫn "/items/"
@app.post("/items/")
async def create_item(item: dict):
return item
3. Các Phương Thức HTTP Trong Routing
Mỗi phương thức HTTP (GET, POST, PUT, DELETE) có chức năng riêng biệt, thường được sử dụng để thực hiện các hành động trên tài nguyên (resources) của server.
Các Phương Thức HTTP Phổ Biến:
- GET: Lấy dữ liệu từ server mà không làm thay đổi trạng thái của server.
- POST: Tạo một tài nguyên mới trên server.
- PUT: Cập nhật một tài nguyên hiện có trên server.
- DELETE: Xóa một tài nguyên trên server.
Ví Dụ Sử Dụng Các Phương Thức HTTP:
python
from fastapi import FastAPI
app = FastAPI()
# GET request
@app.get("/")
def read_root():
return {"Hello": "World"}
# POST request
@app.post("/items/")
async def create_item(item: dict):
return item
# PUT request
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: dict):
return {"item_id": item_id, "item": item}
# DELETE request
@app.delete("/items/{item_id}")
async def delete_item(item_id: int):
return {"item_id": item_id}
4. Tại Sao Routing Quan Trọng?
- Quản lý dễ dàng: Các route giúp định nghĩa rõ ràng các endpoints trong API, từ đó quản lý API trở nên dễ dàng hơn khi ứng dụng phát triển.
- Tăng khả năng mở rộng: FastAPI cho phép bạn mở rộng ứng dụng bằng cách dễ dàng thêm các endpoint mới và sử dụng các phương thức HTTP khác nhau để thực hiện các hành động với tài nguyên.
5. Ví Dụ Cụ Thể Về Routing
Dưới đây là một ví dụ cụ thể về cách sử dụng routing trong FastAPI để xây dựng một API cho cửa hàng bán hàng trực tuyến:
python
from fastapi import FastAPI
app = FastAPI()
@app.get("/products/")
def get_products():
return {"products": [{"name": "Laptop", "price": 1000}, {"name": "Smartphone", "price": 500}]}
@app.post("/products/")
async def create_product(product: dict):
return {"message": "Product created", "product": product}
@app.put("/products/{product_id}")
async def update_product(product_id: int, product: dict):
return {"message": "Product updated", "product_id": product_id, "product": product}
@app.delete("/products/{product_id}")
async def delete_product(product_id: int):
return {"message": "Product deleted", "product_id": product_id}
6. Tóm Tắt
- Routing trong FastAPI cho phép bạn định nghĩa các endpoint và xử lý các yêu cầu HTTP từ client.
- Các HTTP methods như GET, POST, PUT, DELETE phục vụ cho các mục đích khác nhau khi tương tác với tài nguyên trên server.
- FastAPI sử dụng decorators để dễ dàng định nghĩa và xử lý các yêu cầu từ client.
7. Thực Hành Với Một Mini Project
Trong phần thực hành, bạn sẽ xây dựng một API quản lý sách với các chức năng:
- Lấy danh sách tất cả sách (GET).
- Thêm sách mới (POST).
- Cập nhật thông tin sách (PUT).
- Xóa sách (DELETE).
Các Bước Thực Hiện:
- Tạo một ứng dụng FastAPI mới.
- Định nghĩa các route cho các phương thức HTTP như đã nêu ở trên.
- Sử dụng danh sách trong bộ nhớ để lưu trữ sách.
Tạo FastAPI
python
from fastapi import FastAPI
app = FastAPI()
books = []
# 1. Lấy danh sách tất cả sách
@app.get("/books/")
def get_books():
return books
Thêm, Cập Nhật, và Xóa Sách
Bạn sẽ cần định nghĩa thêm các route cho POST, PUT và DELETE giống như trong ví dụ trước đó.
Kiểm Tra Với Swagger UI
FastAPI tự động tạo giao diện Swagger UI. Bạn có thể thử nghiệm API của mình qua trình duyệt bằng đường dẫn http://127.0.0.1:8000/docs
.
Kết Luận
Bài viết này đã hướng dẫn bạn thực hành cơ bản về routing trong FastAPI và cách sử dụng Postman để tương tác với API. Hy vọng bạn đã nắm vững kiến thức cần thiết để tiếp tục phát triển các ứng dụng API phức tạp hơn.
source: viblo