Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

REST API loomine on sageli mehaaniline ülesanne, mis hõlmab palju plaadikujundust ja programmeerimist. Õnneks võivad sellised tööriistad nagu FastAPI leevendada palju tüütuid detaile.

FastAPI abil saate oma CRUD-rakenduse jaoks kiiresti luua tõhusa ja täieliku REST API. Kui andmeallikaks on MongoDB, juhendab see õpetus teid kiiresti oma API seadistamisel.

Mis on FastAPI?

FastAPI on kiire ja avatud lähtekoodiga Pythoni veebiraamistik API-de loomiseks. See pakub sisseehitatud tuge asünkroonsete päringute jaoks, andmete automaatseks valideerimiseks ja API lõpp-punktide automaatseks dokumenteerimiseks.

FastAPI eelised teiste Pythoni raamistike ees

  • FastAPI on suhteliselt kiirem kui teised raamistikud, nagu Django ja Flask. Selle põhjuseks on asjaolu, et FastAPI põhineb asünkroonsel Pythoni I/O teegil, mis suudab samaaegseid taotlusi kiiremini töödelda.
  • instagram viewer
  • FastAPI pakub puhast ja lihtsat viisi API-de loomiseks minimaalse pingutusega, kuna see nõuab vähem koodi kui Flask või Django.
  • Lõpuks muudab FastAPI lõpp-punktide jaoks dokumentatsiooni loomise lihtsaks. See kasutab Swaggeri dokumentatsiooni koostamiseks, mida saate kasutada lõpp-punktide testimiseks, käivitades päringuid ja vaadates vastuseid.

MongoDB andmebaasi seadistamine

Alustamiseks peate seda tegema seadistada MongoDB andmebaasi kohapeal. Teise võimalusena võite valida lihtsama valiku MongoDB klastri seadistamine pilves.

Järgmisena looge andmebaasiühendus, kasutades installitud MongoDB graafilise kasutajaliidese tööriista Compass. Klõpsake nuppu Uus ühendus nuppu ja sisestage ühenduse URI, et luua ühendus kohalikult töötava MongoDB serveriga.

Lõpuks looge oma test-API andmete hoidmiseks uus andmebaas ja kogu.

Seadistage FastAPI server

Terminali abil looge projekti kaust ja sisestage see uus kataloog.

Selle projekti koodi leiate sellest GitHubi hoidla.

Järgmisena kontrollige, kas kasutate Pythoni versiooni 3.6+. Kui ei, installige uusim Python versioon.

python -- versioon

Seejärel installige Virtualenv, et luua isoleeritud virtuaalne arenduskeskkond. See on väga soovitatav, kuna see võimaldab teil vältida konflikte, eriti kui kasutate erinevate projektide jaoks erinevaid pakettide versioone.

pip install virtualenv

Järgmisena looge oma praeguses kataloogis virtuaalne keskkond nimega "venv".

virtualenv venv

Lõpuks aktiveerige virtuaalne keskkond.

# Unixis või MacOS-is: 
allikas venv/bin/activate

# Windowsis:
 .\venv\Scripts\activate

Kui olete virtuaalse keskkonna konfigureerinud, installige FastAPI, PyMongo ja Uvicorni paketid.

pip install fastapi pymongo uvicorn

PyMongo on Pythonil põhinev teek MongoDB andmebaasiga töötamiseks. See pakub API-t, mis toetab kõiki MongoDB funktsioone ja võimaldab teil MongoDB-ga suhelda, ilma et peaksite MongoDB töötlemata päringuid kirjutama.

Uvicorn seevastu on asünkroonne veebiserver, mis põhineb Pythoni asyncio moodulil. Selle peamine funktsioon on teie FastAPI serverite kuum uuesti laadimine liikvel olles. Uvicorni kasutamine on sarnane Nodemoniga töötamine.

Looge FastAPI server

Lõpuks looge lihtne FastAPI server, mis kuulab kodumarsruudilt tulevaid päringuid. Looge oma projektikausta juurkataloogis fail server.py ja lisage allolev kood.

alates fastapi importida FastAPI
rakendus = FastAPI()

@app.get("/")
asünkrdefKodu():
tagasi {"sõnum": "Tere, Maailm"}

Lõpuks käivitage arendusserveri käivitamiseks allolev käsk. Uvicorn teenindab teie rakendust pordis 8000.

uviconi server: rakendus -- laadige uuesti

Jätkake ja vaadake serveri vastust oma brauseris aadressil http://localhost: 8000.

Looge CRUD operatsioonidega REST API

Nüüd looge REST API, mis rakendab CRUD meetodeid (loomine, lugemine, värskendamine ja kustutamine). Looge oma projektikausta juurkataloogis neli kausta: konfiguratsioon, mudelid, marsruudid ja skeemid.

├── konfiguratsioon
├── mudelid
├── marsruudid
├── skeemid
└── server.py

1. Andmebaasiühenduse konfigureerimine

Looge konfiguratsioonikataloogis uus fail db.py ja lisage allolev kood.

alates pümongo importida MongoClient
db_connection = MongoClient("mongodb://localhost: 27017")
db = db_ühendus.andmebaasi_nimi
kogu = db["kogu_nimi"]
  • Kasutage MongoDB andmebaasiga ühenduse loomiseks meetodit MongoClient(). See võtab ühenduse URI stringi argumendina, mis määrab MongoDB serveri hosti ja pordi.
  • Need kaks muutujat määravad, millisele andmebaasile ja kogule teie MongoDB serveris server peaks juurde pääsema.

2. Määratlege andmemudel

See mudel määratleb teie andmete struktuuri andmebaasis, sealhulgas väljad ja andmetüübid.

Looge mudelikataloogis uus fail user_model.py ja lisage allolev kood.

alates püdantlik importida Põhimudel 

klassKasutaja(BaseModel):
nimi: str
roll: str

  • Ülaltoodud kood loob klassi nimega User, mis on Pydanticu teegi BaseModel klassi alamklass. Kasutajaklassil on kaks välja, nimi ja roll, mille andmetüübid on seatud stringidesse.
  • Andmemudelite loomiseks saate kasutada Pydanticu teeki koos FastAPI-ga. Saate seda kasutada ka andmete kinnitamiseks, serialiseerimiseks (JSON-ist Pythoniks) ja deserialiseerimiseks (Python-JSON-iks).

3. Määratlege andmeskeem

Loodud andmemudelist saate määrata oma andmete skeemi. Looge skeemide kataloogis uus fail: user_schema.py ja lisage allolev kood.

defuser_serializer(kasutaja) -> dikteerida:
tagasi {
'id':str (kasutaja["_id"]),
'nimi':kasutaja["nimi"],
"roll":kasutaja["roll"]
}

defuser_serializer(kasutajad) -> nimekiri:
tagasi [kasutaja_serializer (kasutaja) jaoks kasutaja sisse kasutajad]

4. Määrake API marsruudid

Lõpuks määrake erinevate CRUD-operatsioonide marsruudid.

Looge marsruutide kataloogis uus fail: user_routes.py ja lisage allolev kood.

Lisage andmeid postitamismeetodiga

Andmete lisamiseks looge postitusmarsruut.

alates fastapi importida APIRouter
alates mudelid.kasutaja_mudel importida Kasutaja
alates schemas.user_schema importida user_serializer
alates bson importida Objekti ID
alates config.db importida kogumine

kasutaja = APIRouter()

@user.post("/")
asünkrdefloo_kasutaja(kasutaja: kasutaja):
_id = collection.insert_one (dict (kasutaja))
kasutaja = kasutajad_serializer (collection.find({"_id": _id.inserted_id}))
tagasi {"staatus": "Okei","andmed": kasutaja}

  • FastAPI pakub APIRouter() meetodit, mis määratleb ruuteri objekti, mis pakub liidest serverile API päringute tegemiseks.
  • Määrake postitusmarsruut, mis loob andmebaasi uue kasutajaobjekti, sisestades andmed kogusse pärast selle jada jadamist. Järgmisena salvestage ja edastage sisestatud_id, et leida kogust seotud andmed, ja lõpuks tagastage vastuses olevate andmetega olek „Ok”, kui postitustaotlus on edukas.
  • Meetodid insert_one ja find määratleb PyMongo klient.

Nüüd lisage marsruutide lähtestamiseks allolev kood faili server.py.

alates routes.user_routes importida kasutaja
app.include_router (kasutaja)

Jätkake ja testige oma brauseris postitamise marsruuti, kasutades FastAPI pakutavat Swagger UI API tööriista.

Lugege andmeid hankimismeetodiga

Pärast posti marsruudi määratlemist ja marsruutide lähtestamist määrake ülejäänud teised marsruudid.

@user.get("/")
asünkrdefleia_kõik_kasutajad():
kasutajad = kasutajad_serialiseerija (kogu.leida())
tagasi {"staatus": "Okei","andmed": kasutajad}

@user.get("/{id}")
asünkrdefhanki_üks_kasutaja(id: str):
kasutaja = kasutajad_serializer (collection.find({"_id": ObjectId (id)}))
tagasi {"staatus": "Okei","andmed": kasutaja}

Määratlege kaks hankimismarsruuti, mis toovad välja kõik kogus olevad andmed, ja toovad kogust konkreetsed andmed ID alusel.

Värskendage andmeid müügimeetodiga

Andmebaasi salvestatud andmete värskendamiseks looge müügimarsruut.

@user.put("/{id}")
asünkrdefupdate_user(id: str, kasutaja: kasutaja):
collection.find_one_and_update(
{
"_id": ObjectId (id)
},
{
"$set": dikt (kasutaja)
})
kasutaja = kasutajad_serializer (collection.find({"_id": ObjectId (id)}))
tagasi {"staatus": "Okei","andmed": kasutaja}

Put-meetod kasutab ID-d kogust konkreetsete andmete leidmiseks ja uuendab dokumendi väljade väärtust API-st edastatud uute andmetega. Seejärel saate otsida värskendatud andmeid ID järgi ja tagastada need API vastuses.

Kustutage andmed kustutamismeetodiga

Andmebaasis salvestatud andmete kustutamiseks looge kustutamise marsruut.

@user.delete("/{id}")
asünkrdefkustuta_kasutaja(id: str):
collection.find_one_and_delete({"_id": ObjectId (id)})
kasutajad = kasutajad_serialiseerija (kogu.leida())
tagasi {"staatus": "Okei","andmed": []}

Kustutusmarsruut võtab selle konkreetse dokumendi ID, mida soovite kogust kustutada.

Looge FastAPI-ga REST API-sid

FastAPI pakub suurepärast võimalust mugavalt Pythoni veebi API-de loomiseks. Selle sisseehitatud tööriistad andmebaaside integreerimiseks ja automaatseks API tootmiseks muudavad protsessi lihtsaks.

Võite isegi astuda sammu edasi ja luua täisväärtuslikke rakendusi. Proovige integreerida esiotsa klient, kasutades selliseid populaarseid tehnoloogiaid nagu React, Angular või Vue.