Tài liệu tương tác API và web giao diện người dùng. Là một framework được dựa trên OpenAPI do đó có nhiều tùy chọn giao diện cho tài liệu API, 2 giao diện bên dưới là mặc định.
Swagger UI, với giao diện khám phá, gọi và kiểm thử API trực tiếp từ trình duyệt.
Tất cả được dựa trên khai báo kiểu dữ liệu chuẩn của Python 3.8 (cảm ơn Pydantic). Bạn không cần học cú pháp mới, chỉ cần biết chuẩn Python hiện đại.
Nếu bạn cần 2 phút để làm mới lại cách sử dụng các kiểu dữ liệu mới của Python (thậm chí nếu bạn không sử dụng FastAPI), xem hướng dẫn ngắn: Kiểu dữ liệu Python.
Bạn viết chuẩn Python với kiểu dữ liệu như sau:
fromdatetimeimportdatefrompydanticimportBaseModel# Declare a variable as a str# and get editor support inside the functiondefmain(user_id:str):returnuser_id# A Pydantic modelclassUser(BaseModel):id:intname:strjoined:date
Truyền các khóa và giá trị của dict second_user_data trực tiếp như các tham số kiểu key-value, tương đương với: User(id=4, name="Mary", joined="2018-11-30")
Toàn bộ framework được thiết kế để sử dụng dễ dàng và trực quan, toàn bộ quyết định đã được kiểm thử trên nhiều trình soạn thảo thậm chí trước khi bắt đầu quá trình phát triển, để chắc chắn trải nghiệm phát triển là tốt nhất.
Bạn sẽ có được auto-completion trong code, thậm chí trước đó là không thể. Như trong ví dụ, khóa price bên trong một JSON (đó có thể được lồng nhau) đến từ một request.
Không còn nhập sai tên khóa, quay đi quay lại giữa các tài liệu hoặc cuộn lên cuộn xuống để tìm xem cuối cùng bạn đã sử dụng username hay user_name.
FastAPI có các giá trị mặc định hợp lý cho mọi thứ, với các cấu hình tùy chọn ở mọi nơi. Tất cả các tham số có thể được tinh chỉnh để thực hiện những gì bạn cần và để định nghĩa API bạn cần.
Cộng với tất cả các tính năng bảo mật từ Starlette (bao gồm session cookies).
Tất cả được xây dựng dưới dạng các công cụ và thành phần có thể tái sử dụng, dễ dàng tích hợp với hệ thống, kho lưu trữ dữ liệu, cơ sở dữ liệu quan hệ và NoSQL của bạn,...
Hoặc theo một cách nào khác, không cần chúng, import và sử dụng code bạn cần.
Bất kì tích hợp nào được thiết kế để sử dụng đơn giản (với các dependency), đến nỗi bạn có thể tạo một "plug-in" cho ứng dụng của mình trong 2 dòng code bằng cách sử dụng cùng một cấu trúc và cú pháp được sử dụng cho path operations của bạn.
FastAPI tương thích đầy đủ với (và dựa trên) Pydantic. Do đó, bất kì code Pydantic nào bạn thêm vào cũng sẽ hoạt động.
Bao gồm các thư viện bên ngoài cũng dựa trên Pydantic, như ORMs, ODMs cho cơ sở dữ liệu.
Nó cũng có nghĩa là trong nhiều trường hợp, bạn có thể truyền cùng object bạn có từ một request trực tiếp cho cơ sở dữ liệu, vì mọi thứ được validate tự động.
Điều tương tự áp dụng cho các cách khác nhau, trong nhiều trường hợp, bạn có thể chỉ truyền object từ cơ sở dữ liêu trực tiếp tới client.
Với FastAPI, bạn có tất cả những tính năng của Pydantic (FastAPI dựa trên Pydantic cho tất cả những xử lí về dữ liệu):
Không gây rối não:
Không cần học ngôn ngữ mô tả cấu trúc mới.
Nếu bạn biết kiểu dữ liệu Python, bạn biết cách sử dụng Pydantic.
Sử dụng tốt với IDE/linter/não của bạn:
Bởi vì các cấu trúc dữ liệu của Pydantic chỉ là các instances của class bạn định nghĩa; auto-completion, linting, mypy và trực giác của bạn nên làm việc riêng biệt với những dữ liệu mà bạn đã validate.
Validate các cấu trúc phức tạp:
Sử dụng các models Pydantic phân tầng, List và Dict của Python typing,...
Và các validators cho phép các cấu trúc dữ liệu phức tạp trở nên rõ ràng và dễ dàng để định nghĩa, kiểm tra và tài liệu hóa thành JSON Schema.
Bạn có thể có các object JSON lồng nhau và tất cả chúng đã validate và annotated.
Có khả năng mở rộng:
Pydantic cho phép bạn tùy chỉnh kiểu dữ liệu bằng việc định nghĩa hoặc bạn có thể mở rộng validation với các decorator trong model.