เนื่องจากมีงานเล็ก ๆ ที่พัฒนาด้วยภาษา 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 ได้เลย