Vì sao chọn FastAPI

Tram Ho

Introduction

Gần đây, do nhu cầu phát triển theo mô hình microservice ngày càng phổ biến, mình chủ yếu code mảng Python – Backend nên được phép chọn một framework để phát triển project mới cho công ty, sau khi cân nhắc giữa 3 framework phổ biến hiện tại sử dụng Python là Django, Flask và FastAPI, mình quyết định chọn FastAPI để phát triển project, dưới đây là lý do cho việc này.

Main Reason

FastAPI là một micro framework khá mới, chỉ vừa được release năm 2018. Github của framework này hiện tính đến tháng 1/2021 đang đạt 25,4k star, tuy nhiên do được áp dụng khá nhiều công nghệ mới nên có FastAPI có vài điểm mạnh mà mình cảm thấy khá phù hợp để sử dụng phát triển project:

  • High performance
    Do được base trên 2 lib khá mạnh ở thời điểm hiện tại của python là Pydantic và Starlette nên FastAPI sở hữu hiệu suất cao nhất trong tất cả các framework Python hiện nay, bạn có thể tham khảo so sánh hiệu năng giữa các framework tại https://www.techempower.com/
  • Development Speed
    Được hỗ trợ tích hợp sẵn giao diện Swagger – OpenAPI kèm theo cách code khá đơn giản nên lập trình có thể release function rất nhanh mà vẫn có document đầy đủ, đây là lợi thế có thể nói là quan trọng nhất của FastAPI so với các Framework khác. Dưới đây là một đoạn code in ra dòng text healthcheck

  • Bất đồng bộ
    Hiện tại bất đồng bộ đã được hỗ trợ từ phiên bản Django 3.x nhưng ngay từ khi release, FastAPI mặc định đã hỗ trợ developer Async, cũng vì vậy mà FastAPI chỉ có thể sử dụng với python3.6 trở lên

Compare Django, Flask and FastAPI

Dưới đây là bảng so sánh giữa 3 Framework Django, Flask và FastAPI dựa trên những kinh nghiệm của bản thân mình trong việc trải nghiệm cả 3 framework

DjangoFlaskFastAPI
CommunityCộng đồng của Django hiện tại khá lớn và lâu đời, vì vậy số lượng lib hỗ trợ cho Django có thể nói là nhiều nhất ở thời điểm hiện tạiCộng đồng của Flask hiện tại cũng lớn nhưng không bằng Django, bởi vậy số lượng lib cũng hạn chế hơn DjangoCộng đồng của FastAPI là khá mới, do vậy số lượng lib hỗ trợ khá ít
Python versionAll version: 2x, 3xAll version: 2x, 3xOnly python3.x
PerformanceDo hỗ trợ nhiều feature nên perfomance của Django không được caoPerformance khá caoLà framework có hiệu năng cao nhất trong các framework python hiện tại
ORMDjango ORMFlask-sqlachemySqlachemy
AsyncHỗ trợ từ Django 3.xChưa hỗ trợTương thích hoàn toàn
Builtin Admin UIKhôngKhông
Project FrameCó, chỉ cần run python manage startapp yourappKhôngKhông
Python shellKhông – đây là hạn chế của một microframework so với các framework thực thụ
OpenAPI documentPhổ biến nhất là sử dụng Django-rest-framework, với Swagger thì dùng django-rest-swagger với python2.x, dùng drf-yasg với python3.xSử dụng Flask-restplusMặc định đã tích hợp sẵn Swagger và Redocs
Chia sẻ bài viết ngay

Nguồn bài viết : Viblo