A REST API felépítése gyakran mechanikus feladat, amely sok alaprajzi tervezést és gyors programozást foglal magában. Szerencsére az olyan eszközök, mint a FastAPI, sok fárasztó részletet enyhíthetnek.
A FastAPI használatával gyorsan létrehozhat egy hatékony, teljes REST API-t a CRUD alkalmazásához. A MongoDB adatforrásként ez az oktatóanyag elvezeti Önt a saját API gyors beállításához.
Mi az a FastAPI?
FastAPI egy gyors és nyílt forráskódú Python webes keretrendszer API-k építésére. Beépített támogatást biztosít az aszinkron kérésekhez, az adatok automatikus ellenőrzéséhez és az API-végpontok automatikus dokumentálásához.
A FastAPI előnyei más Python-keretrendszerekkel szemben
- A FastAPI viszonylag gyorsabb, mint más keretrendszerek, például a Django és a Flask. Ennek az az oka, hogy a FastAPI az asynciora épül, egy aszinkron I/O-könyvtárra a Python számára, amely gyorsabban képes feldolgozni az egyidejű kéréseket.
- A FastAPI tiszta és egyszerű módot biztosít az API-k minimális erőfeszítéssel történő létrehozására, mivel kevesebb kódot igényel, mint a Flask vagy a Django.
- Végül a FastAPI megkönnyíti a végpontok dokumentációjának létrehozását. A Swagger segítségével olyan dokumentációt állít elő, amelyet a végpontok tesztelésére használhat kérések futtatásával és válaszok megtekintésével.
MongoDB adatbázis beállítása
A kezdéshez meg kell tennie állítsa be helyben a MongoDB adatbázist. Alternatív megoldásként választhatja a könnyebbik opciót is MongoDB-fürt létrehozása a felhőben.
Ezután a telepített MongoDB grafikus felhasználói felület eszköz, a Compass segítségével hozzon létre egy adatbázis-kapcsolatot. Kattints a Új kapcsolat gombot, és adja meg a kapcsolat URI-jét a helyileg futó MongoDB kiszolgálóval való kapcsolat létrehozásához.
Végül hozzon létre egy új adatbázist és gyűjteményt a teszt API-adatok tárolására.
FastAPI szerver beállítása
Terminál használatával hozzon létre egy projektmappát, és lépjen be az új könyvtárba.
A projekt kódja megtalálható benne GitHub adattár.
Ezután ellenőrizze, hogy a Python 3.6-os vagy újabb verziója fut-e. Ha nem, telepítse a legújabbat Piton változat.
python --verzió
Ezután telepítse a Virtualenv-t egy elszigetelt virtuális fejlesztői környezet létrehozásához. Ez erősen ajánlott, mert lehetővé teszi az ütközések elkerülését, különösen akkor, ha a különböző projektekhez különböző csomagverziókat használ.
pip install virtualenv
Ezután hozzon létre egy "venv" nevű virtuális környezetet az aktuális könyvtárban:
virtualenv venv
Végül aktiválja a virtuális környezetet.
# Unix vagy MacOS rendszeren:
forrás venv/bin/activate
# Windows rendszeren:
.\venv\Scripts\activate
Miután konfigurálta a virtuális környezetet, telepítse a FastAPI, PyMongo és Uvicorn csomagokat.
pip install fastapi pymongo uvicorn
A PyMongo egy Python-alapú könyvtár a MongoDB adatbázissal való együttműködéshez. Olyan API-t biztosít, amely támogatja a MongoDB összes funkcióját, és lehetővé teszi a MongoDB-vel való interakciót anélkül, hogy nyers MongoDB-lekérdezéseket kellene írnia.
Az Uvicorn viszont a Python asyncio modulon alapuló aszinkron webszerver. Fő funkciója a FastAPI-kiszolgálók gyors újratöltése útközben. Az Uvicorn használata hasonló a dolgozik a Nodemonnal.
Hozd létre a FastAPI szervert
Végül hozzon létre egy egyszerű FastAPI-kiszolgálót, amely figyeli az otthoni útvonalról érkező kéréseket. A projektmappa gyökérkönyvtárában hozzon létre egy server.py fájlt, és adja hozzá az alábbi kódot.
tól től fastapi import FastAPI
alkalmazás = FastAPI()
@app.get("/")
asyncdefitthon():
Visszatérés {"üzenet": "Helló Világ"}
Végül futtassa az alábbi parancsot a fejlesztői kiszolgáló felpörgetéséhez. Az Uvicorn a 8000-es porton fogja kiszolgálni az alkalmazást.
uvicon szerver: app --reload
Tekintse meg a szerver válaszát a böngészőjében a következő címen: http://localhost: 8000.
Hozza létre a REST API-t a CRUD műveletekkel
Most készítse el a REST API-t, amely megvalósítja a CRUD metódusokat (létrehozás, olvasás, frissítés és törlés). A projektmappa gyökérkönyvtárában hozzon létre négy mappát: konfiguráció, modellek, útvonalak és sémák.
├── konfig
├── modellek
├── útvonalak
├── sémák
└── server.py
1. Állítsa be az adatbázis-kapcsolatot
A konfigurációs könyvtárban hozzon létre egy új db.py fájlt, és adja hozzá az alábbi kódot.
tól től pymongo import MongoClient
db_connection = MongoClient("mongodb://localhost: 27017")
db = db_kapcsolat.adatbázis_neve
gyűjtemény = db["gyűjtemény_neve"]
- A MongoClient() metódus használatával hozzon létre kapcsolatot egy MongoDB adatbázissal. A csatlakozási URI karakterláncot veszi fel argumentumként, amely megadja a MongoDB kiszolgáló gazdagépét és portját.
- A két változó határozza meg, hogy a MongoDB-kiszolgálón melyik adatbázishoz és gyűjteményhez kell hozzáférnie a szervernek.
2. Határozzon meg egy adatmodellt
Ez a modell határozza meg az adatok szerkezetét az adatbázisban, beleértve a mezőket és az adattípusokat.
A modellkönyvtárban hozzon létre egy új user_model.py fájlt, és adja hozzá az alábbi kódot.
tól től pydantikus import BaseModel
osztályFelhasználó(Alapmodell):
név: str
szerepe: str
- A fenti kód létrehoz egy User nevű osztályt, amely a Pydantic könyvtár BaseModel osztályának alosztálya. A User osztálynak két mezője van, a név és a szerep, amelyek adattípusai karakterláncokra vannak beállítva.
- Adatmodellek létrehozásához használhatja a Pydantic könyvtárat a FastAPI-val. Használhatja az adatok érvényesítésére, szerializálására (JSON-ról Python-ra) és deszerializálására (Python-JSON-ra).
3. Adjon meg egy adatsémát
A létrehozott adatmodellből meghatározhatja az adatok sémáját. A sémák könyvtárában hozzon létre egy új fájlt: user_schema.py, és adja hozzá az alábbi kódot.
defuser_serializer(felhasználó) -> diktál:
Visszatérés {
"azonosító":str (felhasználó["_id"]),
'név':felhasználó["név"],
'szerep':felhasználó["szerep"]
}
defuser_serializer(felhasználók) -> lista:
Visszatérés [user_serializer (felhasználó) számára felhasználó ban ben felhasználók]
4. Határozza meg az API-útvonalakat
Végül határozza meg a különböző CRUD műveletek útvonalait.
Az útvonalak könyvtárban hozzon létre egy új fájlt: user_routes.py, és adja hozzá az alábbi kódot.
Adatok hozzáadása a feladási módszerrel
Hozza létre a bejegyzés útvonalát az adatok hozzáadásához.
tól től fastapi import APIRouter
tól től modellek.felhasználói_modell import Felhasználó
tól től schemas.user_schema import user_serializer
tól től bson import ObjectId
tól től config.db import Gyűjteményuser = APIRouter()
@user.post("/")
asyncdeffelhasználó létrehozása(felhasználó: Felhasználó):
_id = collection.insert_one (dict (felhasználó))
user = user_serializer (collection.find({"_id": _id.inserted_id}))
Visszatérés {"állapot": "Rendben","adat": felhasználó}
- A FastAPI biztosítja az APIRouter() metódust, amely definiál egy útválasztó objektumot, amely interfészt biztosít az API-kérések kiszolgáló felé történő küldéséhez.
- Adjon meg egy bejegyzési útvonalat, amely új felhasználói objektumot hoz létre az adatbázisban az adatok beszúrásával a gyűjteménybe a szerializálás után. Ezután tárolja és adja át az inserted_id értéket, hogy megtalálja a társított adatokat a gyűjteményben, és végül adjon „Ok” állapotot a válaszban szereplő adatokkal, ha a közzétételi kérelem sikeres.
- Az insert_one és find metódusokat a PyMongo kliens határozza meg.
Most adja hozzá az alábbi kódot a server.py fájlhoz az útvonalak inicializálásához.
tól től routes.user_routes import felhasználó
app.include_router (felhasználó)
Tesztelje a közzétételi útvonalat böngészőjében a FastAPI által biztosított Swagger UI API eszközzel.
Adatok olvasása a Get Methoddal
A postai útvonal meghatározása és az útvonalak inicializálása után határozza meg a többi útvonalat.
@user.get("/")
asyncdeffind_all_users():
userek = user_serializer (collection.find())
Visszatérés {"állapot": "Rendben","adat": felhasználók}
@user.get("/{id}")
asyncdefget_one_user(azonosító: str):
user = user_serializer (collection.find({"_id": ObjectId (id)}))
Visszatérés {"állapot": "Rendben","adat": felhasználó}
Határozzon meg két lekérési útvonalat, amelyek a gyűjteményben lévő összes adatot lekérik, és az azonosító alapján meghatározott adatokat kérnek le a gyűjteményből.
Frissítse az adatokat az eladási módszerrel
Hozzon létre egy put útvonalat az adatbázisban tárolt adatok frissítéséhez.
@user.put("/{id}")
asyncdefupdate_user(azonosító: str, felhasználó: Felhasználó):
collection.find_one_and_update(
{
"_id": ObjectId (id)
},
{
"$set": diktál (felhasználó)
})
user = user_serializer (collection.find({"_id": ObjectId (id)}))
Visszatérés {"állapot": "Rendben","adat": felhasználó}
A put metódus az azonosító segítségével keresi meg a gyűjteményben lévő konkrét adatokat, és frissíti a dokumentum mezőinek értékét az API-tól átadott új adatokkal. Ezután azonosító alapján megkeresheti a frissített adatokat, és visszaküldheti az API-válaszban.
Adatok törlése a törlési módszerrel
Hozza létre a törlési útvonalat az adatbázisban tárolt adatok törléséhez.
@user.delete("/{id}")
asyncdefdelete_user(azonosító: str):
collection.find_one_and_delete({"_id": ObjectId (id)})
userek = user_serializer (collection.find())
Visszatérés {"állapot": "Rendben","adat": []}
A törlési útvonal felveszi annak a dokumentumnak az azonosítóját, amelyet törölni szeretne a gyűjteményből.
Hozzon létre REST API-kat a FastAPI segítségével
A FastAPI nagyszerű lehetőséget kínál a Python webes API-k háttérbeli kényelmes felépítésére. Az adatbázis-integrációhoz és az automatikus API-gyártáshoz beépített eszközei egyszerűvé teszik a folyamatot.
Még egy lépéssel tovább is léphet, és teljes értékű alkalmazásokat készíthet. Próbáljon meg integrálni egy front-end klienst olyan népszerű technológiákkal, mint a React, Angular vagy Vue.