ทดลองใช้ FastAPI สำหรับสร้าง API ด้วยภาษา Python

วันนี้ผมจะมาทดลองใช้ FastAPI สำหรับสร้าง API ด้วยภาษา Python กันครับ

FastAPI

เป็น web framework สำหรับสร้างช่องทางการเชื่อมต่อสำหรับการรับส่งข้อมูล (API) ด้วยภาษา Python เพื่อไม่ใช้เสียเวลามาลงมือกันเลยดีกว่าครับ

ติดตั้ง FastAPI

$pip install fastapi uvicorn[standard]

สร้าง API

เริ่มสร้าง API สำหรับเข้ามาที่ end point ("/") จะแสดงข้อความ Hello World FastAPI กัน

สร้างไฟล์ main.py ดังนี้

ทดลองรัน

ด้วยคำสั่งต่อไปนี้

$ uvicorn main:app --reload

เปิด webbrowser โดยไปที่ http://127.0.0.1:8000 จะได้ผลลัพธ์ดังต่อไปนี้

ง่ายมาก กอไก่ล้านตัว…

สร้าง API คำนวณดัชนีมวลกาย (bmi)

ทดลองทำ API สำหรับคำนวณค่าดัชนีมวลกาย (BMI) ต่อกันดีกว่าครับ โดยผมจะสร้าง endpoint ("/bmi") โดยรับค่าน้ำหนักเป็นกิโลกรัม (weight) และ ส่วนสูงเป็นเซนติเมตร (height) แบบ GET จากนั้นคำนวณค่า bmi จากสูตร น้ำหนัก(kg) หาร ส่วนสูง(m) ยกกำลัง 2 โดยเพิ่ม code ดังนี้ครับ

ทดลองคำนวณค่า bmi โดยน้ำหนักเป็น 55 kg และ ส่วนสูงเป็น 165 cm โดยเรียกไปที่ http://localhost:8000/bmi?weight=55&height=165 จากนั้นจะได้ผลลัพธ์ดังนี้

ง่ายมากๆจริงๆครับ

เรียกดูคู่มือการใช้งาน (document)

แต่ที่ผมชอบที่สุดอยู่ตรงนี้ครับ นอกจากสร้าง API ได้ง่ายแล้ว FastAPI สามารถสร้างคู่มือการใช้งาน (document) แบบมาตราฐานให้เลยแบบอัตโนมัติ!!!

เพราะโปรแกรมเมอร์เกือบทุกคนบนโลกนี้ไม่ชอบงานเอกสารครับ (ผมคิดเอาเองนะครับ แต่อาจจะมีคนชอบอยู่บ้าง ^^)

ลองเข้าไปที่ http://localhost:8000/docs จะปรากฎ document ดังนี้ครับ

มาลองดูว่า document ที่สร้างออกมา work ไหมครับ?

ลองกดที่ bmi ดูจะพบว่ามีรายละเอียดที่ใช้ได้เลย ซึ่งเป็นคู่มือการใช้งาน API ได้เลยนะครับ มีทั้งรายละเอียด Parameters ว่าจะต้อง input ข้อมูลอย่างไรบ้าง มีรูปแบบการ Responses มา API จะตอบกลับอย่างไร เรียกว่าครบตามมาตราฐานเลยครับ

นอกจากนี้ ยังไม่จบสามารถลอง request ผ่านหน้านี้ได้เลย ว้าวเลยครับ…

โดยไปที่ Try it out ในช่อง Parameters จากนั้นลองใส่ weight และ height แล้วกด Execute จะพบผลลัพธ์ดังต่อไปนี้

ยอดเยี่ยมมากครับ สร้าง document ให้ไม่พอยัง มีหน้าใส่ทดลองยิง request ได้อีก ^^

ต่อมาลองมาดูจุดเด่นกันหน่อยครับ

Speed

เรื่องความเร็วข้อมูลจาก techempower benchmarks พบว่า FastAPI มีประสิทธิภาพดีกว่า Flask และ Django ดังรูป

https://dev.to/fuadrafid/fastapi-the-good-the-bad-and-the-ugly-20ob

https://miro.medium.com/proxy/1*NJDSwtMVmyIlvSyYewN3BQ.png

Excellent documentation

FastAPI เท่าที่ดูสามารถสร้างคู่มือออกมาให้แบบอัตโนมัติ และมีมาตราฐาน อันนี้ทำได้ดีมากๆครับ ชอบๆ

วันนี้ขอมารีวิวสั้นๆเท่านี้ก่อนนะครับ จริงๆแล้วยังมีข้อดีอีกหลายข้อ และก็มีข้อเสียด้วยจากที่ผมอ่านรีวิวจากที่อื่นมา เดี๋ยวว่างๆจะมารีวิวเพิ่มเติมให้นะครับ

ขอบคุณทุกๆท่านที่อ่านมาจนจบนะครับ หวังว่าบทความนี้จะเป็นประโยชน์ไม่มากก็น้อยนะครับ

สนใจอ่านเพิ่มเติมเรื่อง :

เขียน Python สร้าง API ง่าย ๆ ด้วย FastAPI ให้บริการ Face Recognition ทดลองด้วยภาพสาว ๆ Blackpink

บทความโดย อ.ผศ.ดร.ธรรณพ อารีพรรค

วิทยาลัยนวัตกรรมดิจิทัลเทคโนโลยี มหาวิทยาลัยรังสิต