FastAPI ialah rangka kerja web moden berprestasi tinggi untuk membina API dengan Python, membolehkan pembangun mencipta aplikasi yang berkuasa dan cekap dengan usaha yang minimum. Ia direka bentuk dengan mengambil kira pengaturcaraan tak segerak, menjadikannya sangat pantas dan mampu mengendalikan berbilang permintaan serentak. Komponen utama yang menggerakkan FastAPI termasuk Uvicorn, Starlette, Swagger UI dan Pydantic. Dalam panduan ini, kami akan meneroka setiap komponen ini dan melihat cara ia digabungkan dalam FastAPI, dengan contoh kod untuk menunjukkan konsep utama.
FastAPI dibina di atas dua asas utama:
Mari mulakan dengan apl FastAPI yang mudah untuk mendapatkan idea tentang strukturnya:
# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"}
Ini ialah aplikasi FastAPI asas dengan satu laluan (/) yang mengembalikan respons JSON dengan {"Hello": "World"}.
Untuk menjalankan apl ini, anda akan menggunakan Uvicorn, pelayan ASGI yang direka untuk menyediakan aplikasi web tak segerak.
Uvicorn ialah pelayan ASGI sepantas kilat, dioptimumkan untuk mengendalikan kod tak segerak. Ia penting untuk menjalankan aplikasi FastAPI kerana ia mengendalikan permintaan HTTP yang masuk dan mengurus kitaran hayat permintaan ini.
Untuk menjalankan apl FastAPI anda dengan Uvicorn, gunakan arahan berikut:
uvicorn main:app --reload
Apabila anda menjalankan arahan ini, Uvicorn akan mula menyediakan apl FastAPI anda dan anda boleh mengaksesnya di http://127.0.0.1:8000.
FastAPI dibina di atas Starlette, rangka kerja ASGI ringan yang mengendalikan operasi HTTP teras, termasuk penghalaan, perisian tengah dan sokongan WebSockets. Starlette menyediakan alatan peringkat rendah yang digunakan FastAPI untuk mengurus permintaan HTTP, menjadikannya asas yang stabil dan berprestasi untuk membina aplikasi web.
FastAPI memanfaatkan sistem penghalaan Starlette untuk menentukan titik akhir API. Contohnya:
@app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id}
Dalam contoh ini:
Starlette juga membenarkan anda menambah peranti tengah untuk pelbagai operasi, seperti pengendalian CORS (Perkongsian Sumber Silang Asal), pengelogan permintaan atau pengesahan tersuai:
# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"}
Fleksibiliti dalam Starlette ini menjadikan FastAPI sangat boleh dikonfigurasikan, membolehkan pembangun menambahkan perisian tengah tersuai dengan mudah mengikut keperluan.
FastAPI menjana dokumentasi API interaktif secara automatik dengan Swagger UI. Dokumentasi ini tersedia secara lalai di /docs dan membenarkan pembangun menguji titik akhir terus daripada penyemak imbas.
Untuk melihat tindakan ini, mulakan apl FastAPI anda dan lawati http://127.0.0.1:8000/docs. Anda akan melihat UI Swagger interaktif yang menyenaraikan semua laluan anda, parameternya dan respons yang dijangkakan.
Satu lagi antara muka dokumentasi, ReDoc, turut disediakan di /redoc secara lalai, menawarkan paparan spesifikasi API yang lebih terperinci.
Salah satu aspek FastAPI yang paling berkuasa ialah penggunaannya Pydantic untuk pengesahan data. Model Pydantic membolehkan anda menentukan struktur data permintaan dan respons dengan kekangan jenis yang ketat dan pengesahan automatik.
Mari tambahkan model Pydantic pada contoh kami:
uvicorn main:app --reload
Dalam kod ini:
Cuba hantar permintaan seperti ini menggunakan UI Swagger di /docs:
@app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id}
FastAPI akan mengesahkan data dan mengembalikan sebarang ralat secara automatik jika data tidak sepadan dengan jenis yang dijangkakan. Contohnya, jika harga diberikan sebagai rentetan (seperti "dua puluh"), FastAPI akan membalas dengan ralat pengesahan terperinci.
Mari kembangkan apl kami dengan menambahkan lebih banyak laluan dan menggabungkan semua yang kami pelajari setakat ini:
from starlette.middleware.cors import CORSMiddleware app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], )
Dengan persediaan ini:
Untuk menjalankan aplikasi ini, gunakan Uvicorn:
# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"}
Navigasi ke http://127.0.0.1:8000/docs untuk melihat dokumentasi interaktif atau gunakan alat seperti cURL atau Posmen untuk menghantar permintaan ke titik akhir yang berbeza.
FastAPI menggabungkan faedah prestasi pengaturcaraan tak segerak dengan kesederhanaan pembayang jenis Python untuk mencipta rangka kerja yang pantas, mudah digunakan dan sesuai untuk aplikasi pengeluaran. Dengan menyepadukan Uvicorn, Starlette, Swagger UI dan Pydantic, FastAPI menyediakan pendekatan yang sangat diperkemas untuk pembangunan API, menjadikannya pilihan yang bagus untuk aplikasi prototaip pantas dan gred pengeluaran.
Dengan adanya asas-asas teras ini, anda kini dilengkapi untuk menyelam lebih dalam ke dalam dunia FastAPI dan membina aplikasi berprestasi tinggi yang boleh berskala.
Atas ialah kandungan terperinci Memahami Asas FastAPI: Panduan untuk FastAPI, Uvicorn, Starlette, Swagger UI dan Pydantic. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!