วันนี้ผมจะมาทดลองใช้ FastAPI สำหรับสร้าง API ด้วยภาษา Python กันครับ
เป็น web framework สำหรับสร้างช่องทางการเชื่อมต่อสำหรับการรับส่งข้อมูล (API) ด้วยภาษา Python เพื่อไม่ใช้เสียเวลามาลงมือกันเลยดีกว่าครับ
$pip install fastapi uvicorn[standard]
เริ่มสร้าง API สำหรับเข้ามาที่ end point ("/") จะแสดงข้อความ Hello World FastAPI กัน
สร้างไฟล์ main.py ดังนี้
ด้วยคำสั่งต่อไปนี้
$ uvicorn main:app --reload
เปิด webbrowser โดยไปที่ http://127.0.0.1:8000 จะได้ผลลัพธ์ดังต่อไปนี้
ง่ายมาก กอไก่ล้านตัว…
ทดลองทำ 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 จากนั้นจะได้ผลลัพธ์ดังนี้
ง่ายมากๆจริงๆครับ
แต่ที่ผมชอบที่สุดอยู่ตรงนี้ครับ นอกจากสร้าง 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 ได้อีก ^^
ต่อมาลองมาดูจุดเด่นกันหน่อยครับ
เรื่องความเร็วข้อมูลจาก 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
FastAPI เท่าที่ดูสามารถสร้างคู่มือออกมาให้แบบอัตโนมัติ และมีมาตราฐาน อันนี้ทำได้ดีมากๆครับ ชอบๆ
วันนี้ขอมารีวิวสั้นๆเท่านี้ก่อนนะครับ จริงๆแล้วยังมีข้อดีอีกหลายข้อ และก็มีข้อเสียด้วยจากที่ผมอ่านรีวิวจากที่อื่นมา เดี๋ยวว่างๆจะมารีวิวเพิ่มเติมให้นะครับ
ขอบคุณทุกๆท่านที่อ่านมาจนจบนะครับ หวังว่าบทความนี้จะเป็นประโยชน์ไม่มากก็น้อยนะครับ
สนใจอ่านเพิ่มเติมเรื่อง :
● เขียน Python สร้าง API ง่าย ๆ ด้วย FastAPI ให้บริการ Face Recognition ทดลองด้วยภาพสาว ๆ Blackpink
บทความโดย อ.ผศ.ดร.ธรรณพ อารีพรรค
วิทยาลัยนวัตกรรมดิจิทัลเทคโนโลยี มหาวิทยาลัยรังสิต