Skip to main content
0
Programming LanguagePython

มาทำความรู้จักกับ Fast API

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/

หากคุณสนใจพัฒนา สตาร์ทอัพ แอปพลิเคชัน
และ เทคโนโลยีของตัวเอง ?

อย่ารอช้า ! เรียนรู้ทักษะด้านดิจิทัลเพื่ออัพเกรดความสามารถของคุณ
เริ่มตั้งแต่พื้นฐาน พร้อมปฏิบัติจริงในรูปแบบหลักสูตรออนไลน์วันนี้

Sirasit Boonklang

Author Sirasit Boonklang

More posts by Sirasit Boonklang
Close Menu

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า