Xem thêm

Tạo ứng dụng FastAPI cho Python

Huy Erick
FastAPI là một framework web nhanh và nhẹ cho việc xây dựng các giao diện lập trình ứng dụng hiện đại với Python 3.6 trở lên. Trong bài học này, chúng ta sẽ đi qua...

FastAPI là một framework web nhanh và nhẹ cho việc xây dựng các giao diện lập trình ứng dụng hiện đại với Python 3.6 trở lên. Trong bài học này, chúng ta sẽ đi qua những khái niệm cơ bản để tạo một ứng dụng với FastAPI và bạn sẽ có được cái nhìn về vì sao nó được bầu là một trong những framework mã nguồn mở tốt nhất năm 2021.

Nếu bạn sẵn sàng để phát triển các ứng dụng FastAPI của riêng bạn, bạn không cần tìm kiếm xa để tìm một nơi để lưu trữ chúng. Kinsta cung cấp một nền tảng dịch vụ dựa trên Python chuyên sâu về ứng dụng và cơ sở dữ liệu.

Hãy bắt đầu với những khái niệm cơ bản.

Lợi ích của FastAPI

Dưới đây là một số lợi ích mà framework FastAPI mang đến cho một dự án.

  • Tốc độ: Như tên gọi, FastAPI là một framework rất nhanh. Tốc độ của nó tương đương với Go và Node.js, hai lựa chọn phổ biến nhất cho việc xây dựng các giao diện lập trình ứng dụng (APIs).

  • Dễ học và dễ lập trình: FastAPI đã đặt nền móng cho một API đã qua sản xuất, nghĩa là bạn không phải lập trình lại từ đầu. Với chỉ một vài dòng code, bạn đã có một API RESTful sẵn sàng sử dụng.

  • Tài liệu đầy đủ: FastAPI sử dụng tiêu chuẩn tài liệu OpenAPI, cho phép tạo tài liệu động. Tài liệu này cung cấp thông tin chi tiết về các endpoint, phản hồi, tham số và mã phản hồi từ FastAPI.

  • API ít lỗi hơn: FastAPI hỗ trợ việc xác minh dữ liệu tùy chỉnh, giúp nhà phát triển tạo ra các API ít lỗi hơn. Nhóm phát triển FastAPI tự hào rằng framework này giúp giảm lỗi do con người gây ra lên đến 40%.

  • Gợi ý kiểu dữ liệu: Mô-đun types được giới thiệu trong Python 3.5, cho phép bạn khai báo kiểu dữ liệu của biến. Khi kiểu dữ liệu của biến được khai báo, các IDE có thể cung cấp hỗ trợ tốt hơn và dự đoán lỗi chính xác hơn.

Bắt đầu với FastAPI

Để theo dõi bài học này và bắt đầu với FastAPI, bạn cần thực hiện một số việc đầu tiên.

Hãy chắc chắn rằng bạn có một trình soạn thảo/viết mã cho lập trình viên , như Visual Studio Code. Một số lựa chọn khác là Sublime Text và Espresso.

Thực hành chạy ứng dụng Python của bạn và các phiên bản của nó trong môi trường ảo đã trở thành một tương thích phổ biến. Môi trường ảo cho phép bạn chạy các tập hợp gói và cấu hình khác nhau đồng thời và tránh xung đột do phiên bản gói không tương thích.

Để tạo một môi trường ảo, mở Terminal và chạy lệnh sau:

$ python3 -m venv env

Sau đó, bạn cần kích hoạt môi trường ảo. Lệnh tương ứng phụ thuộc vào hệ điều hành và shell bạn đang sử dụng. Dưới đây là một số ví dụ về việc kích hoạt CLI cho các môi trường khác nhau:

# On Unix or MacOS (bash shell): /path/to/venv/bin/activate # On Unix or MacOS (csh shell): /path/to/venv/bin/activate.csh # On Unix or MacOS (fish shell): /path/to/venv/bin/activate.fish # On Windows (command prompt): pathtovenvScriptsactivate.bat # On Windows (PowerShell): pathtovenvScriptsActivate.ps1

(Một số IDE hỗ trợ Python cũng có thể được cấu hình để kích hoạt môi trường ảo hiện tại.)

Tiếp theo, hãy cài đặt FastAPI:

$ pip3 install fastapi

FastAPI là một framework dùng để xây dựng APIs, nhưng để kiểm tra các APIs của bạn, bạn cần một máy chủ web cục bộ. Uvicorn là một máy chủ Web ASGI cực nhanh, dùng để phát triển tốt. Để cài đặt Uvicorn, chạy lệnh sau:

$ pip3 install "uvicorn[standard]"

Sau khi cài đặt thành công, tạo một tệp tin có tên main.py trong thư mục làm việc của dự án của bạn. Tệp tin này sẽ là điểm khởi đầu cho ứng dụng của bạn.

Image Hình ảnh của một dự án FastAPI đơn giản trong một IDE

Ví dụ FastAPI nhanh

Bạn có thể kiểm tra cài đặt FastAPI bằng cách tạo nhanh một điểm cuối ví dụ. Hãy thêm mã sau vào tệp main.py của bạn và lưu tệp:

# main.py from fastapi import FastAPI  app = FastAPI()  @app.get("/") async def root():     return {"greeting":"Hello world"}

Mã trên tạo một điểm cuối FastAPI đơn giản. Dưới đây là các chức năng từng dòng mã:

  • from fastapi import FastAPI: Chức năng cho API của bạn được cung cấp bởi lớp Python FastAPI.
  • app = FastAPI(): Đây là cách tạo một phiên bản FastAPI.
  • @app.get("/"): Đây là một decorator Python, cho biết rằng hàm bên dưới nó sẽ xử lý các yêu cầu.
  • async def root(): Đây là một hàm bất đồng bộ, xử lý các yêu cầu được gửi đến điểm cuối "/".
  • return {"greeting":"Hello world"}: Kết quả trên sẽ được phản hồi bởi hàm được gói lại.

Trong thư mục dự án của bạn, chạy lệnh sau trong Terminal để khởi động máy chủ API:

$ uvicorn main:app -reload

Trong lệnh trên, main là tên của module của bạn. Đối tượng app là một phiên bản của ứng dụng của bạn và sẽ được nhập vào máy chủ ASGI. Với cờ -reload, máy chủ sẽ tự động tải lại mỗi khi bạn thay đổi mã.

Trình duyệt của bạn nên chuyển đến http://localhost:8000 để kiểm tra xem API của bạn có hoạt động hay không. Bạn sẽ thấy một đối tượng JSON "Hello: World" trên trang, cho thấy việc tạo API với FastAPI dễ dàng như thế nào. Bạn chỉ cần xác định một tuyến đường và trả về từ điển Python của bạn như thể hiện trong dòng mã thứ sáu ở ví dụ trên.

Image Ứng dụng FastAPI Hello World trong trình duyệt web

Sử dụng gợi ý kiểu

Nếu bạn đã sử dụng Python, bạn đã quen với việc gán kiểu dữ liệu cho các biến cơ bản như int, str, float và bool. Tuy nhiên, từ phiên bản Python 3.9, các cấu trúc dữ liệu phức tạp đã được giới thiệu. Tiến bộ này cho phép bạn làm việc với các cấu trúc dữ liệu như dictionaries, tuples và lists. Với gợi ý kiểu của FastAPI, bạn có thể cấu trúc dữ liệu của mình bằng cách sử dụng các mô hình pydantic và sau đó sử dụng các mô hình pydantic này cho gợi ý kiểu và hưởng lợi từ việc xác minh dữ liệu mà nó cung cấp.

Dưới đây là một ví dụ về việc sử dụng gợi ý kiểu trong Python để tính toán tiền ăn đơn giản (calculate_meal_fee):

def calculate_meal_fee(beef_price: int, meal_price: int) -> int:     total_price: int = beef_price + meal_price     return total_price  print("Calculated meal fee", calculate_meal_fee(75, 19))

Lưu ý rằng gợi ý kiểu không làm thay đổi cách thực thi mã của bạn.

Tài liệu API FastAPI tương tác

FastAPI sử dụng Swagger UI để cung cấp tài liệu API tương tác tự động. Để truy cập vào nó, hãy điều hướng đến http://localhost:8000/docs và bạn sẽ thấy một trang có danh sách các điểm cuối, phương thức và lược đồ của bạn.

Image Tài liệu Swagger UI cho FastAPI

Tài liệu API dựa trên trình duyệt này được cung cấp bởi FastAPI và bạn không cần phải làm gì khác để sử dụng nó.

Một tài liệu API dựa trên trình duyệt thay thế khác được cung cấp bởi FastAPI là Redoc. Để truy cập vào Redoc, hãy điều hướng đến http://localhost:8000/redoc. Bạn sẽ thấy một danh sách của các điểm cuối, phương thức và câu trả lời tương ứng với mỗi mục.

Image Tài liệu Redoc cho FastAPI

Thiết lập Routes trong FastAPI

Với decorator @app, bạn có thể chỉ định phương thức của điểm cuối, chẳng hạn như @app.get hoặc @app.post, và ngoài các lựa chọn phổ biến GET, POST, PUT và DELETE, còn có các lựa chọn không phổ biến hơn là HEAD, PATCH và TRACE.

Xây dựng ứng dụng của bạn với FastAPI

Trong bài học này, bạn đã tìm hiểu về FastAPI framework cho Python và đã thấy mình có thể nhanh chóng làm chạy một ứng dụng được hỗ trợ bởi FastAPI. Bạn đã học cách tạo các điểm cuối CRUD API với framework này - tức là tạo, đọc, cập nhật và xóa các bản ghi trong cơ sở dữ liệu.

Nếu bạn muốn đưa phát triển ứng dụng web của mình lên một tầm cao mới, bạn nên xem xét nền tảng Application và Database Hosting của Kinsta. Giống như FastAPI, nó đơn giản và mạnh mẽ.

Hãy đưa tất cả ứng dụng của bạn, cơ sở dữ liệu và trang web WordPress trực tuyến dưới một mái nhà. Nền tảng đám mây chọn lọc chúng tôi bao gồm:

  • Thiết lập và quản lý dễ dàng thông qua bảng điều khiển MyKinsta
  • Hỗ trợ chuyên gia 24/7
  • Phần cứng và mạng tốt nhất từ Google Cloud Platform, hỗ trợ bởi Kubernetes để tăng tính mở rộng tối đa
  • Tích hợp Cloudflare cấp doanh nghiệp để đảm bảo tốc độ và bảo mật
  • Phạm vi toàn cầu với tới 35 trung tâm dữ liệu và 260 điểm cung cấp nội dung trên toàn cầu

Bắt đầu với một bản dùng thử miễn phí của Ứng dụng Hosting hoặc Database Hosting. Khám phá các gói của chúng tôi hoặc liên hệ với Phòng kinh doanh để tìm gói phù hợp cho bạn.

1