Fast API คืออะไร ?!
FastAPI คือเว็บเฟรมเวิร์กที่มีความรวดเร็วและประสิทธิภาพสูง สำหรับการสร้าง API ด้วย Python เวอร์ชั่น 3.6 ขึ้นไป
เขียนโดย
Sirasit Boonklang – BorntoDev Co., Ltd.
แล้ว Fast API มีข้อดีอย่างไรล่ะ
1.มีความรวดเร็ว ประสิทธิภาพเทียบเท่ากับ NodeJS และ Go
2.สร้างง่าย เพิ่มความเร็วในการพัฒนา
3.ลดข้อผิดพลาดที่เกิดจากมนุษย์ (นักพัฒนา)
ขั้นตอนการติดตั้ง Python และ Fast API
1.ทำการดาวน์โหลดและติดตั้ง Python สามารถดาวน์โหลดได้ที่ https://www.python.org/downloads/
2.เมื่อทำการดาวน์โหลดมาแล้วให้ทำการเปิดไฟล์ที่ดาวน์โหลดมา แล้วติ้กเลือก Install launcher for all users และ Add Python 3.9 to PATH แล้วกด Install Now
รอสักครู่ Python กำลังทำการติดตั้งลงบนเครื่องของเรา
เมื่อติดตั้งเสร็จให้ทำการเปิด cmd ขึ้นมาแล้วพิมพ์คำว่า python แล้วกด enter หากติดตั้งสำเร็จ จะแสดงข้อมูล python ที่ใช้งานอยู่ตามด้วยเลขเวอร์ชั่นดังรูปด้านล่าง แล้วให้ทำการกด ctrl + z แล้ว Enter เพื่อออก
5.และใช้คำสั่ง pip intsall fastapi เพื่อทำการติดตั้งไลบรารี Fast API
มาเริ่มต้นเขียนโปรแกรมสร้าง API ด้วย Fast API แรกกันเลย
6.ไปยังโปรแกรม Visual Studio Code สร้างไฟล์ชื่อว่า main.py ขึ้นมาแล้วนำโค้ดนี้ไปรันเลยครับ
from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"}
7.ก่อนรันให้ทำการ ติดตั้ง uvicorn โดยใช้คำสั่ง pip install uvicorn
8.ทำการรัน live server ด้วยคำสั่ง uvicorn main:app –reload
โดยคำสั่ง uvicorn main:app หมายถึง:
main คือ ไฟล์ชื่อ main.py
app คือ ออปเจคที่สร้างภายใน main.py ในบรรทัด app = FastAPI()
–reload: ทำให้เซิร์ฟเวอร์เริ่มต้นใหม่หลังจากแก้โค้ดและบันทึกใหม่ (ใช้ในการ Dev เท่านั้น)
9.หลังจากนั้นให้เปิดเบราว์เซอร์ไปที่ http://127.0.0.1:8000 จะพบกับ response ที่เป็น JSON ดังรูป
10.โดยจุดเด่นของ Fast API ก็คือมี Interactive API docs ซึ่งเป็น Document ที่บอกว่า API ของเราใช้งานอย่างไรและเรายังสามารถทำการทดสอบ API ได้จากหน้านี้เลยด้วย โดยไปที่ http://127.0.0.1:8000/docs
11.ต่อไปเรามาลองสร้าง path และตัวดำเนินการเพิ่มกันครับ โดยตัวดำเนินการ หรือ Operation จะใช้เป็น HTTP methods และใน HTTP protocol เราสามารถใช้สื่อสารในแต่ละ path ได้โดยใช้ methods เหล่านี้
POST: เพื่อสร้างข้อมูล
GET: เพื่ออ่านข้อมูล
PUT: เพื่ออัปเดตข้อมูล
DELETE: เพื่อลบข้อมูล
ตัวอย่างเช่น
@app.get(“/”) บอก FastAPI ว่าฟังก์ชันด้านล่างมีหน้าที่จัดการตาม request ที่ไปที่ path / หรือ path เริ่มต้น และใช้ get ในการรับข้อมูล
12.ต่อไปเป็นการประกาศ path เพื่อนำเอาพารามิเตอร์หรือตัวแปรเข้ามาใช้งาน จากตัวอย่างโค้ดด้านล่างครับผม
@app.get("/result/{score}") async def result_exam(score): score = int(score) if(score >= 50): result = "Pass" else: result = "No pass" return {"your result is": result}
จากโค้ดจะเห็นได้ว่าค่าของพารามิเตอร์ score ของพาท result จะถูกส่งต่อไปยังฟังก์ชัน result_exam เพื่อนำพารามิเตอร์ดังกล่าวไปทำงานในฟังก์ชั่นนั้น
13.เราสามารถใส่ค่าพารามิเตอร์ไปตามหลัง path ได้เลยดังรูป
14.หรือจะเป็นการทำสอบ API จากหน้า http://localhost:8000/docs ก็ได้นะครับ
15.และเมื่อต้องการรับฟิลด์แบบฟอร์มแทน JSON ก็สามารถใช้ Form จากหน้า http://localhost:8000/docs ได้
from fastapi import FastAPI, Form @app.post("/login/") async def login(username: str = Form(...), password: str = Form(...)): return {"username": username}
16.และยังสามารถที่จะอัปโหลดจากไคลเอนต์ได้อีกด้วย
from fastapi import FastAPI, File, UploadFile @app.post("/files/") async def create_file(file: bytes = File(...)): return {"file_size": len(file)} @app.post("/uploadfile/") async def create_upload_file(file: UploadFile = File(...)): return {"filename": file.filename}
API จะส่งข้อมูลกลับมาให้เราพร้อมกับ status code ในที่นี้การร้องขอและการตอบกลับปกติ status code จะเป็น 200
แต่เอ๊ะ ?! Status code คืออะไร แล้วมีอะไร
Status code คือตัวเลข 3 หลักเพื่อบอกถึงสถานะของการตอบกลับ
โดย status code แต่ละตัวมีความหมายดังนี้
100 ขึ้นบ่งบอกว่า “ข้อมูล” ไม่ค่อยได้ใช้โดยตรง ไม่มีเนื้อหาเหล่านี้
200 ขึ้นไปมีไว้บ่งบอกว่า การตอบกลับ “สำเร็จ”
201 “สร้างแล้ว” มักใช้หลังจากสร้างเรคคอร์ดใหม่ในฐานข้อมูล
204 “ไม่มีเนื้อหา” การตอบสนองนี้ใช้เมื่อไม่มีเนื้อหาที่จะส่งคืนไปยังไคลเอ็นต์
300 ขึ้นไปมีไว้สำหรับ “Redirection หรือ การเปลี่ยนเส้นทาง”
400 ขึ้นไปมีไว้สำหรับการตอบสนอง “ข้อผิดพลาดของไคลเอ็นต์”
ตัวอย่างคือ 404 สำหรับการตอบกลับ “ไม่พบหน้าเว็บนี้”
500 ขึ้นไปเป็นข้อผิดพลาดของเซิร์ฟเวอร์ เมื่อมีบางอย่างผิดพลาดโค้ดในแอปพลิเคชันหรือเซิร์ฟเวอร์ โปรแกรมก็จะส่งคืนสถานะนี้โดยอัตโนมัติ
การ Deploy FastAPI ไปยัง Deta
ตอนนี้ในโฟลเดอร์ของเราจะต้องมีไฟล์ main.py และ requirements.txt (ไฟล์สำหรับเก็บชื่อไลบรารีที่ใช้กับโปรเจคนี้)
17.ทำการเปิด PowerShell แล้วรันคำสั่ง iwr https://get.deta.dev/cli.ps1 -useb | iex หากเป็น Linux หรือ MacOS ใช้คำสั่ง curl -fsSL https://get.deta.dev/cli.sh | sh
18.ทำการ login Deta ด้วยคำสั่ง deta login
19.ไปยัง directory หรือ โฟลเดอร์ของโปรเจคที่ต้องการจะ Deploy แล้วใช้คำสั่ง deta new
20.ตอนนี้สามารถเปิดเบราว์เซอร์ใน URL ที่ endpoint ได้เลย
ในตัวอย่างด้านบนคือ https://coiup2.deta.dev การ deploy แต่ละครั้งจะได้ URL ที่ต่างกัน
และสามารถไปที่ /docs ได้อีกด้วย เช่น https://coiup2.deta.dev/docs
สามารถศึกษาเพิ่มเติมเกี่ยวกับ FastAPI ได้ที่ https://fastapi.tiangolo.com/