กลับไปหน้าบทความ

อ่าน 5 นาที

ฟาสต์เอพี

FastAPI เป็น เฟรมเวิร์กเว็บ สำหรับการสร้าง API บริการแบบ HTTP ใน Python 3.

ฟาสต์เอพี

( เรียนรู้วิธีและเวลาในการลบข้อความนี้ )
ฟาสต์เอพี
นักพัฒนาเซบาสเตียน รามิเรซ
ปล่อย5 ธันวาคม 2018 [ 1 ] ( 5 ธันวาคม 2018 )
เวอร์ชันเสถียร
0.138.0 [ 2 ] แก้ไขข้อมูลนี้บนวิกิดาต้า / 20 มิถุนายน 2026 ( 20 มิถุนายน 2026 )
เขียนเป็นไพธอน
พิมพ์เฟรมเวิร์กเว็บ
ใบอนุญาตเอ็มไอที
เว็บไซต์fastapi.tiangolo.com
ที่เก็บข้อมูลgithub .com /tiangolo /fastapi

FastAPIเป็นเฟรมเวิร์กเว็บสำหรับการสร้างAPIบริการแบบHTTPในPython 3.8+ [ 3 ] โดยใช้ Pydantic และคำแนะนำประเภทเพื่อตรวจสอบความถูกต้อง แปลงข้อมูลเป็นอนุกรม และแปลงข้อมูลกลับเป็นอนุกรม FastAPI ยังสร้างเอกสาร OpenAPIสำหรับ API ที่สร้างด้วยเฟรมเวิร์กนี้โดยอัตโนมัติ[ 4 ]เปิดตัวครั้งแรกในปี 2018

ส่วนประกอบ

ไพแดนติก

Pydantic เป็นไลบรารีตรวจสอบความถูกต้องของข้อมูลสำหรับ Python ในขณะที่เขียนโค้ดในIDE Pydantic จะให้คำแนะนำประเภทตามคำอธิบายประกอบ[ 5 ] FastAPI ใช้โมเดล Pydantic อย่างกว้างขวางสำหรับการตรวจสอบความถูกต้องของข้อมูล การทำให้เป็นอนุกรม และเอกสาร API อัตโนมัติ โมเดลเหล่านี้ใช้คำแนะนำประเภทมาตรฐานของ Python ซึ่งให้วิธีการประกาศเพื่อระบุโครงสร้างและประเภทของข้อมูลสำหรับคำขอขาเข้า (เช่น เนื้อหา HTTP) และการตอบกลับขาออก[ 6 ]

จากfastapi นำเข้าFastAPI จากpydantic นำเข้าBaseModelแอป= FastAPI ()คลาสItem ( BaseModel ): name : str price : float is_offer : bool | None = None@ app.post ( "/items/" ) def create_item ( item : Item ) : # อ็อบเจ็กต์ 'item' ได้รับการตรวจสอบและกำหนดประเภทเรียบร้อยแล้วreturn { " message" : "ได้รับรายการแล้ว" , "item_name" : item.name }

สตาร์เล็ตต์

Starlette เป็น เฟรมเวิร์ก/ชุดเครื่องมือ ASGI น้ำหนักเบา เพื่อรองรับฟังก์ชันการทำงานแบบอะซิงโครนัสใน Python [ 7 ]

ยูวิคอร์น

Uvicorn เป็นเว็บเซิร์ฟเวอร์/แอปพลิเคชันระดับต่ำสุดขั้นต่ำสำหรับเฟรมเวิร์กแบบอะซิงโครนัส โดยปฏิบัติตามข้อกำหนด ASGIในทางเทคนิคแล้ว มันใช้โมเดลมัลติโปรเซสที่มีโปรเซสหลักหนึ่งโปรเซส ซึ่งรับผิดชอบในการจัดการพูลของโปรเซสทำงานและกระจายคำขอ HTTP ที่เข้ามาไปยังโปรเซสเหล่านั้น จำนวนโปรเซสทำงานจะถูกกำหนดค่าไว้ล่วงหน้า แต่สามารถปรับเพิ่มหรือลดได้ในขณะรันไทม์[ 8 ]

การผสานรวม OpenAPI

FastAPI สร้าง เอกสาร OpenAPIสำหรับ API โดยอัตโนมัติ เอกสารนี้ประกอบด้วยทั้งSwagger UIและReDocซึ่งมีเอกสาร API แบบโต้ตอบที่คุณสามารถใช้เพื่อสำรวจและทดสอบเอนด์พอยต์ของคุณแบบเรียลไทม์ ซึ่งมีประโยชน์อย่างยิ่งสำหรับการพัฒนา ทดสอบ และแบ่งปัน API กับนักพัฒนาหรือผู้ใช้รายอื่น Swagger UI สามารถเข้าถึงได้โดยค่าเริ่มต้นที่/docsและ ReDoc ที่เส้นทาง/redoc [ 9 ]

คุณสมบัติ

การดำเนินการแบบอะซิงโครนัส

สถาปัตยกรรมของ FastAPI รองรับการเขียนโปรแกรมแบบอะซิงโครนัส โดยธรรมชาติ การออกแบบนี้ช่วยให้ลูปเหตุการณ์แบบเธรดเดียว สามารถจัดการคำขอพร้อมกันจำนวนมากได้อย่างมีประสิทธิภาพ โดยเฉพาะอย่างยิ่งเมื่อต้องจัดการกับการดำเนินการที่เกี่ยวข้องกับ I/O เช่น การสืบค้นฐานข้อมูลหรือการเรียกใช้ API ภายนอก สำหรับข้อมูลอ้างอิง โปรดดูรูปแบบ async/ await

การฉีดการพึ่งพา

FastAPI ผสานรวม ระบบ Dependency Injection (DI)เพื่อจัดการและให้บริการแก่เอนด์พอยต์ HTTP กลไกนี้ช่วยให้นักพัฒนาสามารถประกาศส่วนประกอบต่างๆ เช่น เซสชันฐานข้อมูลหรือตรรกะการตรวจสอบสิทธิ์เป็นพารามิเตอร์ของฟังก์ชัน FastAPI จะแก้ไขการพึ่งพาเหล่านี้โดยอัตโนมัติสำหรับแต่ละคำขอ โดยฉีดอินสแตนซ์ที่จำเป็น[ 10 ]

จากfastapi นำเข้าDepends , HTTPException , status จากdb นำเข้าDbSession# --- ความสัมพันธ์ที่จำเป็นสำหรับเซสชันฐานข้อมูล --- def get_db (): db = DbSession () try : yield db finally : db . close ()@ app.post ( " / items/" , status_code = status.HTTP_201_CREATED ) def create_item ( name : str , description : str , db : DbSession = Depends ( get_db )): new_item = Item ( name = name , description = description ) db.add ( new_item ) db.commit ( ) db.refresh ( new_item ) return { "message" : " Item created successfully !" , " item " : new_item }@ app.get ( " / items/ { item_id} " ) def read_item ( item_id : int , db : DbSession = Depends ( get_db ) ) : item = db.query ( Item ) .filter ( Item.id == item_id ) .first ( ) if item is None : raise HTTPException ( status_code = status.HTTP_404_NOT_FOUND , detail = " Item not found " ) return item

รองรับ WebSockets

WebSocketsช่วยให้สามารถสื่อสารแบบฟูลดูเพล็กซ์ระหว่างไคลเอนต์และเซิร์ฟเวอร์ได้ ความสามารถนี้มีความสำคัญอย่างยิ่งสำหรับแอปพลิเคชันที่ต้องการการแลกเปลี่ยนข้อมูลอย่างต่อเนื่อง เช่น แพลตฟอร์มการส่งข้อความโต้ตอบแบบทันที แดชบอร์ดข้อมูลสด หรือเกมออนไลน์แบบผู้เล่นหลายคน FastAPI ใช้ประโยชน์จากการใช้งาน Starlette พื้นฐาน ทำให้สามารถจัดการการเชื่อมต่อและการจัดการข้อความได้อย่างมีประสิทธิภาพ[ 11 ]

# คุณต้องติดตั้งแพ็กเกจ 'websockets' ก่อนจากfastapi import WebSocket@ app.websocket ( " /ws" ) async def websocket_endpoint ( websocket : WebSocket ) : await websocket.accept ( ) while True : data = await websocket.receive_text ( ) await websocket.send_text ( f " ข้อความคือ: { data } " )

งานเบื้องหลัง

FastAPI ช่วยให้สามารถดำเนินการงานเบื้องหลังได้หลังจากส่งการตอบกลับ HTTP ไปยังไคลเอ็นต์แล้ว ซึ่งช่วยให้ API สามารถตอบสนองต่อคำขอของผู้ใช้ได้ทันที ในขณะเดียวกันก็ประมวลผลการทำงานที่ไม่สำคัญหรือใช้เวลานานในเบื้องหลัง แอปพลิเคชันทั่วไป ได้แก่ การส่งการแจ้งเตือนทางอีเมล การอัปเดตแคช หรือการประมวลผลข้อมูลภายหลัง[ 12 ]

จากfastapi นำเข้าBackgroundTasks , UploadFile , File จากutils นำเข้าgenerate_thumbnail@ app.post ( " / upload-image/" ) async def upload_image ( image : UploadFile = File ( ... ), background_tasks : BackgroundTasks ) : file_location = f "uploaded_images/ { image.filename } </i> " # บันทึกภาพที่อัปโหลดด้วยopen ( image_path , " wb " ) as f : contents = await file.read ( ) f.write ( contents )# เพิ่ม การสร้างภาพขนาด ย่อเป็นงานเบื้องหลังbackground_tasks.add_task ( generate_thumbnail , file_location , "200x200" )return { "message" : f "อัปโหลดรูปภาพ ' { image . filename } ' เรียบร้อยแล้ว เริ่มการสร้างภาพขนาดย่อในพื้นหลัง" }

ตัวอย่าง

โค้ดต่อไปนี้แสดงแอปพลิเคชันเว็บอย่างง่ายที่แสดงข้อความ " Hello, World! " เมื่อเข้าชม:

# นำเข้าคลาส FastAPI จากแพ็คเกจ fastapi จากfastapi import FastAPI# สร้างอินสแตนซ์ของ แอปFastAPI app = FastAPI ()# กำหนดเส้นทาง GET สำหรับ URL รูท ("/") @app.get ( " /" ) async def read_root () -> str : # ส่งคืนการตอบกลับข้อความธรรมดาreturn "Hello, World !"

ดูเพิ่มเติม

  • เว็บไซต์อย่างเป็นทางการแก้ไขข้อมูลนี้ได้ที่วิกิดาต้า
  • fastapiบนGitHub
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=FastAPI&oldid=1336720302 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ฟาสต์เอพี

FastAPI เป็น เฟรมเวิร์กเว็บ สำหรับการสร้าง API บริการแบบ HTTP ใน Python 3.

ไพแดนติก

Pydantic เป็นไลบรารีตรวจสอบความถูกต้องของข้อมูลสำหรับ Python ในขณะที่เขียนโค้ดใน IDE Pydantic จะให้คำแนะนำประเภทตามคำอธิบายประกอบ [ 5 ] FastAPI ใช้โมเดล Pydantic อย่างกว้างขวางสำหรับการตรวจสอบความถูกต้องของข้อมูล การทำให้เป็นอนุกรม และเอกสาร API อัตโนมัติ...

สตาร์เล็ตต์

Starlette เป็น เฟรมเวิร์ก/ชุดเครื่องมือ ASGI น้ำหนักเบา เพื่อรองรับฟังก์ชันการทำงานแบบอะซิงโครนัสใน Python [ 7 ]

ยูวิคอร์น

Uvicorn เป็นเว็บเซิร์ฟเวอร์/แอปพลิเคชันระดับต่ำสุดขั้นต่ำสำหรับเฟรมเวิร์กแบบอะซิงโครนัส โดยปฏิบัติตามข้อกำหนด ASGIในทางเทคนิคแล้ว มันใช้โมเดลมัลติโปรเซสที่มีโปรเซสหลักหนึ่งโปรเซส ซึ่งรับผิดชอบในการจัดการพูลของโปรเซสทำงานและกระจายคำขอ HTTP...