เนื่องจากมีงานเล็ก ๆ ที่พัฒนาด้วยภาษา Python ต้องทำส่งนิดหน่อย
โดยปกติจะใช้ Flask ในการพัฒนาเป็นหลัก
แต่เห็นว่ามี library อีกตัวที่น่าสนใจคือ FastAPI
ลองทำการศึกษา ลองใช้งาน แล้วก็ดันทำส่งลูกค้าไป
มาดูกันหน่อยว่า FastAPI มีอะไรที่น่าสนใจบ้าง ?

เป้าหมายของ FastAPI นั้นมี 3 เรื่องหลัก ๆ คือ

  • Speed คือความเร็วของการทำงาน
  • Developer experience
  • Open standard

ในเรื่องของความเร็วนั้น

ถ้าใช้ค่า default หรือจากตัวอย่างเลย
พบว่าไม่ได้เร็วอย่างที่บอกแต่สามารถ config เพิ่มเติมได้
ยกตัวอย่างเช่น

  • การปิด log ออก console
  • การเพิ่ม worker เข้าไป

โดยการทำงานด้านหลังมันคือ Starlette และ Pydantic
ที่สำคัญเมื่อ Starlette + Uvicorn ก็จะสนับสนุน Asynchronous ให้อีกด้วย
สามารถใช้ syntax async และ await ได้เลย

ถ้ามองในแง่การความเร็วในการพัฒนาแล้ว

พบว่า ช่วยให้พัฒนาได้เร็วขึ้นมาเพราะว่า
ได้เตรียมสิ่งที่ต้องใช้งานให้ครบแล้ว
ไม่ต้องมาทำอะไรเองมาก
แถมมีตัวช่วยในการตรวจสอบความผิดพลาดให้ด้วย อันนี้ชอบมาก ๆ
หรือทำพวก type checking ให้อีกด้วย สบายไปไหม

สิ่งที่สำคัญมาก ๆ คือ Live reload ก็มีมาให้พร้อม
ไม่ต้องไปหา program เพิ่มเติมอีก

แต่สิ่งที่แจ่มมาก ๆ คือ สนับสนุน Open API หรือชื่อเก่าคือ Swagger เลย

ดังนั้นเราจะได้ API Documentation ให้แบบอัตโนมัติ
รวมทั้งสนับสนุน JSON Schema สำหรับการ validate JSON อีกด้วย
โดยจะมีทั้ง Swagger UI และ Redoc ให้เลย

มีครบขนาดนี้ มาลองใช้งานกันดู ทั้ง

  • Data validation
  • Dependency Injection
  • Serialize และ Deserialize
  • Middleware
  • Modular
  • Security
  • Testing
  • Deployment

คิดว่าเอามาแทนที่ Flask ได้เลย