วิธีการใช้ FastAPI สร้างบริการ API ที่มีประสิทธิภาพสูง
วิธีการใช้ FastAPI สร้างบริการ API ที่มีประสิทธิภาพสูง
FastAPI เป็นเฟรมเวิร์กเว็บที่ทันสมัยและรวดเร็ว (มีประสิทธิภาพ) ที่ออกแบบมาเพื่อสร้าง API โดยเฉพาะ มันถูกสร้างขึ้นบนพื้นฐานของการระบุประเภทใน Python และรองรับการเขียนโปรแกรมแบบอะซิงโครนัส ซึ่งอนุญาตให้นักพัฒนาสร้างบริการ API ที่มีประสิทธิภาพสูงและมีความพร้อมใช้งานสูง โดยมีความหน่วงต่ำ บทความนี้จะอธิบายรายละเอียดเกี่ยวกับวิธีการใช้ FastAPI ในการสร้างบริการ API ที่มีประสิทธิภาพสูง เราจะแบ่งเป็นขั้นตอนเพื่อช่วยให้คุณสามารถทำตั้งแต่การตั้งค่าสภาพแวดล้อมไปจนถึงการปรับใช้
ขั้นตอนที่หนึ่ง: การเตรียมสภาพแวดล้อม
คุณต้องมั่นใจว่าคุณได้ติดตั้ง Python 3.6+ ในสภาพแวดล้อมการพัฒนาของคุณ หากยังไม่ได้ติดตั้ง สามารถไปที่ เว็บไซต์ Python เพื่อดาวน์โหลดและติดตั้ง
ติดตั้ง FastAPI และ Uvicorn
FastAPI เองไม่ได้ให้บริการ ต้องการเซิร์ฟเวอร์ ASGI เพื่อรองรับ ที่นี่เราจะใช้ Uvicorn ซึ่งเป็นเซิร์ฟเวอร์ ASGI ที่มีประสิทธิภาพสูง สามารถใช้คำสั่งต่อไปนี้เพื่อติดตั้ง FastAPI และ Uvicorn:
pip install fastapi uvicorn
ขั้นตอนที่สอง: สร้าง API พื้นฐาน
มาสร้างแอป FastAPI ที่ง่ายๆ กันเถอะ
สร้างไฟล์แอป
ในไดเรกทอรีโปรเจกต์ของคุณ สร้างไฟล์ Python เช่น main.py แล้วเขียนโค้ดดังนี้:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello, World!"}
ในโค้ดข้างต้น เราได้ทำการนำเข้า FastAPI และสร้างอินสแตนซ์ app ขึ้นมา จากนั้นเรากำหนดเส้นทาง GET ซึ่งเมื่อเข้าถึงเส้นทางราก / จะส่งคืนการตอบกลับ JSON ที่ง่าย
เริ่มเซิร์ฟเวอร์
เริ่มเซิร์ฟเวอร์ FastAPI ของคุณด้วยคำสั่งต่อไปนี้:
uvicorn main:app --reload
main: หมายถึงชื่อไฟล์ โดยไม่ต้องมีนามสกุล .pyapp: หมายถึงอินสแตนซ์ FastAPI--reload: ในโหมดพัฒนา เซิร์ฟเวอร์จะรีสตาร์ทโดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงไฟล์
ขั้นตอนที่สาม: กำหนดเส้นทางและโมเดลข้อมูล
เพื่อสร้าง API ที่ซับซ้อน คุณต้องใช้ Pydantic ในการกำหนดโมเดลข้อมูล
สร้างโมเดลข้อมูล
ใน main.py เพิ่มเนื้อหาดังนี้:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_available: bool = True
โค้ดนี้ใช้ Pydantic สร้างโมเดลข้อมูล Item ซึ่งประกอบด้วยชื่อสินค้า ราคา และสถานะการมีอยู่
เพิ่มเส้นทางใหม่
ต่อไป เราสามารถกำหนดเส้นทาง POST ใหม่เพื่อรับข้อมูลประเภท Item:
@app.post("/items/")
async def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
ในเส้นทางนี้ FastAPI จะทำการตรวจสอบข้อมูลที่ส่งเข้ามาโดยอัตโนมัติและทำการแมพไปยังโมเดล Item
ขั้นตอนที่สี่: การสร้างเอกสารอัตโนมัติ
หนึ่งในข้อดีที่ใหญ่ที่สุดของ FastAPI คือสามารถสร้างเอกสาร API โดยอัตโนมัติ คุณสามารถดูได้โดยการเข้าถึงที่อยู่ต่อไปนี้:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
ในเอกสารที่สร้างขึ้นเหล่านี้ คุณสามารถทดสอบ API แบบโต้ตอบได้ ดูรูปแบบคำขอและการตอบกลับของแต่ละเส้นทาง
ขั้นตอนที่ห้า: เพิ่มการตรวจสอบสิทธิ์
ในแอปพลิเคชันจริง การตรวจสอบสิทธิ์เป็นขั้นตอนที่สำคัญ มาลองเพิ่มการตรวจสอบสิทธิ์ที่ง่ายๆ โดยอิงจากบทบาทกันเถอะ
เพิ่มการพึ่งพาความปลอดภัย
ใช้วิธี Depends ของ FastAPI และ OAuth2PasswordBearer เพื่อทำการตรวจสอบสิทธิ์:
from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
async def fake_decode_token(token):
return {"sub": token}
async def get_current_user(token: str = Depends(oauth2_scheme)):
user = fake_decode_token(token)
if user is None:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid authentication credentials")
return user
ปกป้องเส้นทาง
จากนั้น คุณสามารถเพิ่มการตรวจสอบสิทธิ์ไปยังเส้นทางที่ต้องการปกป้อง:
@app.get("/users/me")
async def read_users_me(current_user: dict = Depends(get_current_user)):
return current_user
ขั้นตอนที่หก: ปรับใช้แอป FastAPI
เมื่อคุณเสร็จสิ้นการพัฒนาแล้ว คุณอาจต้องการปรับใช้แอปไปยังเซิร์ฟเวอร์คลาวด์ สามารถเลือกใช้ Docker ในการปรับใช้
สร้าง Dockerfile
ในไดเรกทอรีโปรเจกต์ สร้างไฟล์ชื่อ Dockerfile และใส่เนื้อหาดังนี้:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
COPY ./app /app
สร้าง Docker image
ในเทอร์มินัลของคุณ ใช้คำสั่งต่อไปนี้เพื่อสร้าง Docker image:
docker build -t myfastapiapp .
รัน Docker container
รันแอป FastAPI ของคุณ:
docker run -d --name fastapi -p 80:80 myfastapiapp
สรุป
ในบทความนี้ เราได้อธิบายรายละเอียดเกี่ยวกับวิธีการใช้ FastAPI สร้างบริการ API ที่มีประสิทธิภาพสูง ตั้งแต่การเตรียมสภาพแวดล้อมไปจนถึงการสร้าง API พื้นฐาน การกำหนดเส้นทางและโมเดลข้อมูล รวมถึงการเพิ่มการตรวจสอบสิทธิ์และการปรับใช้ FastAPI มีฟังก์ชันที่ทรงพลังมากมาย ทำให้การสร้าง API สมัยใหม่เป็นเรื่องง่ายและมีประสิทธิภาพ คุณสามารถสำรวจฟังก์ชันและคุณสมบัติเพิ่มเติมได้จากเอกสารทางการ หวังว่าบทความนี้จะช่วยให้คุณเริ่มต้นกับ FastAPI ได้เร็วขึ้นและเพิ่มประสิทธิภาพในการพัฒนาโปรเจกต์ของคุณ!





