Kaltaisesi lukijat auttavat tukemaan MUO: ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

REST API: n rakentaminen on usein mekaaninen tehtävä, joka sisältää paljon kattilasuunnittelua ja ohjelmointia. Onneksi FastAPI: n kaltaiset työkalut voivat vapauttaa paljon tylsiä yksityiskohtia.

FastAPI: n avulla voit nopeasti rakentaa tehokkaan, täydellisen REST API: n CRUD-sovelluksellesi. Kun MongoDB on tietolähde, tämä opetusohjelma opastaa sinua määrittämään oma API nopeasti.

Mikä on FastAPI?

FastAPI on nopea ja avoimen lähdekoodin Python-verkkokehys API: iden rakentamiseen. Se tarjoaa sisäänrakennetun tuen asynkronisille pyynnöille, tietojen automaattiselle validoinnille ja API-päätepisteiden automaattiselle dokumentoinnille.

FastAPI: n edut muihin Python-kehyksiin verrattuna

  • FastAPI on suhteellisen nopeampi kuin muut puitteet, kuten Django ja Flask. Tämä johtuu siitä, että FastAPI rakentuu asyncion päälle, Pythonin asynkroniselle I/O-kirjastolle, joka pystyy käsittelemään samanaikaisia ​​pyyntöjä nopeammin.
  • FastAPI tarjoaa puhtaan ja yksinkertaisen tavan rakentaa API: t vähällä vaivalla, koska se vaatii vähemmän koodia kuin Flask tai Django.
  • Lopuksi FastAPI tekee dokumentaation luomisesta helppoa päätepisteille. Se käyttää Swaggeria dokumentaation tuottamiseen, jonka avulla voit testata päätepisteitä suorittamalla pyyntöjä ja tarkastelemalla vastauksia.

Luo MongoDB-tietokanta

Päästäksesi alkuun, sinun on tehtävä määritä MongoDB-tietokanta paikallisesti. Vaihtoehtoisesti voit valita helpomman vaihtoehdon MongoDB-klusterin perustaminen pilveen.

Luo seuraavaksi tietokantayhteys asennetun MongoDB: n graafisen käyttöliittymätyökalun Compassin avulla. Klikkaa Uusi yhteys -painiketta ja anna yhteyden URI muodostaaksesi yhteyden paikallisesti toimivaan MongoDB-palvelimeen.

Luo lopuksi uusi tietokanta ja kokoelma testi-API-tietojen säilyttämistä varten.

Määritä FastAPI-palvelin

Luo projektikansio päätelaitteen avulla ja kirjoita uusi hakemisto.

Löydät tämän projektin koodin siitä GitHub-arkisto.

Tarkista seuraavaksi, että käytössäsi on Python-versio 3.6+. Jos ei, asenna uusin Python versio.

python -- versio

Asenna sitten Virtualenv luodaksesi eristetty virtuaalinen kehitysympäristö. Tämä on erittäin suositeltavaa, koska sen avulla voit välttää ristiriidat, varsinkin jos käytät eri versioita paketeista eri projekteihin.

pip install virtualenv

Luo seuraavaksi virtuaalinen ympäristö nimeltä "venv" nykyiseen hakemistoosi:

virtualenv venv

Aktivoi lopuksi virtuaaliympäristö.

# Unix tai MacOS: 
lähde venv/bin/activate

# Windowsissa:
 .\venv\Scripts\activate

Kun olet määrittänyt virtuaaliympäristön, asenna FastAPI-, PyMongo- ja Uvicorn-paketit.

pip asennus fastapi pymongo uvicorn

PyMongo on Python-pohjainen kirjasto MongoDB-tietokannan kanssa työskentelemiseen. Se tarjoaa sovellusliittymän, joka tukee kaikkia MongoDB: n ominaisuuksia ja antaa sinun olla vuorovaikutuksessa MongoDB: n kanssa ilman, että sinun tarvitsee kirjoittaa raakaa MongoDB-kyselyä.

Uvicorn puolestaan ​​on asynkroninen verkkopalvelin, joka perustuu Python-asyncio-moduuliin. Sen pääominaisuus on FastAPI-palvelimiesi nopea lataaminen liikkeellä ollessasi. Uvicornin käyttö on samanlaista kuin työskennellä Nodemonin kanssa.

Luo FastAPI-palvelin

Luo lopuksi yksinkertainen FastAPI-palvelin, joka kuuntelee kotireitiltä tulevia pyyntöjä. Luo projektikansiosi juurihakemistoon server.py-tiedosto ja lisää alla oleva koodi.

alkaen fastapi tuonti FastAPI
sovellus = FastAPI()

@app.get("/")
asynkdefKoti():
palata {"viesti": "Hei maailma"}

Suorita lopuksi alla oleva komento käynnistääksesi kehityspalvelimen. Uvicorn palvelee hakemustasi portissa 8000.

uvicon-palvelin: app --reload

Siirry eteenpäin ja katso palvelimen vastaus selaimessasi osoitteessa http://localhost: 8000.

Luo REST-sovellusliittymä CRUD-toimintojen avulla

Rakenna nyt REST API, joka toteuttaa CRUD-menetelmät (luo, lue, päivitä ja poista). Luo projektikansiosi juurihakemistoon neljä kansiota: config, mallit, reitit ja skeemat.

├── konfigurointi
├── mallit
├── reittejä
├── skeemoja
└── server.py

1. Määritä tietokantayhteys

Luo config-hakemistoon uusi tiedosto db.py ja lisää alla oleva koodi.

alkaen pymongo tuonti MongoClient
db_connection = MongoClient("mongodb://localhost: 27017")
db = db_yhteys.tietokannan_nimi
kokoelma = db["kokoelman_nimi"]
  • Käytä MongoClient()-menetelmää yhteyden luomiseen MongoDB-tietokantaan. Se ottaa yhteyden URI-merkkijonon argumenttina, joka määrittää MongoDB-palvelimen isännän ja portin.
  • Nämä kaksi muuttujaa määrittävät, mitä MongoDB-palvelimesi tietokantaa ja kokoelmaa palvelimen tulee käyttää.

2. Määritä tietomalli

Tämä malli määrittää tietokannassa olevien tietojesi rakenteen, mukaan lukien kentät ja tietotyypit.

Luo mallihakemistoon uusi tiedosto user_model.py ja lisää alla oleva koodi.

alkaen pydantinen tuonti Perusmalli 

luokkaaKäyttäjä(Perusmalli):
nimi: str
rooli: str

  • Yllä oleva koodi luo luokan nimeltä User, joka on Pydantic-kirjaston BaseModel-luokan alaluokka. User-luokassa on kaksi kenttää, nimi ja rooli, joiden tietotyypit on asetettu merkkijonoihin.
  • Voit käyttää Pydantic-kirjastoa FastAPI: n kanssa tietomallien luomiseen. Voit käyttää sitä myös tietojen vahvistamiseen, sarjoittamiseen (JSON–Python) ja sarjan poistamiseen (Python–JSON).

3. Määritä tietokaavio

Luodusta tietomallista voit määrittää skeeman tiedoillesi. Luo skeemahakemistoon uusi tiedosto: user_schema.py ja lisää alla oleva koodi.

defuser_serializer(käyttäjä) -> sanella:
palata {
'id':str (käyttäjä["_id"]),
'nimi':käyttäjä["nimi"],
'rooli':käyttäjä["rooli"]
}

defuser_serializer(käyttäjät) -> lista:
palata [user_serializer (käyttäjä) varten käyttäjä sisään käyttäjät]

4. Määritä API-reitit

Lopuksi määritä reitit eri CRUD-operaatioille.

Luo reittihakemistoon uusi tiedosto: user_routes.py ja lisää alla oleva koodi.

Lisää tietoja postimenetelmällä

Luo viestireitti tietojen lisäämistä varten.

alkaen fastapi tuonti APIRouter
alkaen mallit.käyttäjämalli tuonti Käyttäjä
alkaen schemas.user_schema tuonti user_serializer
alkaen bson tuonti ObjectId
alkaen config.db tuonti kokoelma

käyttäjä = APIRouter()

@user.post("/")
asynkdefluo käyttäjä(käyttäjä: käyttäjä):
_id = collection.insert_one (dict (käyttäjä))
user = users_serializer (collection.find({"_id": _id.inserted_id}))
palata {"Tila": "okei","data": käyttäjä}

  • FastAPI tarjoaa APIRouter()-menetelmän, joka määrittää reititinobjektin, joka tarjoaa rajapinnan API-pyyntöjen tekemiseen palvelimelle.
  • Määritä julkaisureitti, joka luo uuden käyttäjäobjektin tietokantaan lisäämällä tiedot kokoelmaan sen sarjoinnin jälkeen. Tallenna ja välitä seuraavaksi inserted_id löytääksesi liitännäistiedot kokoelmasta, ja lopuksi palauta tila "Ok" vastauksen tiedoilla, jos lähetyspyyntö onnistuu.
  • PyMongo-asiakas määrittää insert_one- ja find-menetelmät.

Lisää nyt alla oleva koodi server.py-tiedostoon alustaaksesi reitit.

alkaen routes.user_routes tuonti käyttäjä
app.include_router (käyttäjä)

Mene eteenpäin ja testaa julkaisureittiä selaimessasi FastAPI: n tarjoaman Swagger UI API -työkalun avulla.

Lue tiedot Get-menetelmällä

Kun olet määrittänyt postireitin ja alustanut reitit, määritä loput muut reitit.

@user.get("/")
asynkdeffind_all_users():
käyttäjät = user_serializer (collection.find())
palata {"Tila": "okei","data": käyttäjät}

@user.get("/{id}")
asynkdefget_one_user(tunnus: str):
user = users_serializer (collection.find({"_id": ObjectId (id)}))
palata {"Tila": "okei","data": käyttäjä}

Määritä kaksi hakureittiä, jotka hakevat kaikki kokoelman tiedot ja hakevat tietyt tiedot kokoelmasta tunnuksen perusteella.

Päivitä tiedot Put Methodilla

Luo put-reitti päivittääksesi tietokantaan tallennetut tiedot.

@user.put("/{id}")
asynkdefupdate_user(tunnus: str, käyttäjä: käyttäjä):
collection.find_one_and_update(
{
"_id": ObjectId (id)
},
{
"$set": sanele (käyttäjä)
})
user = users_serializer (collection.find({"_id": ObjectId (id)}))
palata {"Tila": "okei","data": käyttäjä}

Put-metodi käyttää tunnusta löytääkseen tietyt tiedot kokoelmasta ja päivittää asiakirjan kenttien arvon API: lta välitetyillä uusilla tiedoilla. Voit sitten etsiä päivitettyjä tietoja tunnuksella ja palauttaa ne API-vastauksessa.

Poista tiedot Poista-menetelmällä

Luo poistoreitti poistaaksesi tietokantaan tallennetut tiedot.

@user.delete("/{id}")
asynkdefdelete_user(tunnus: str):
collection.find_one_and_delete({"_id": ObjectId (id)})
käyttäjät = user_serializer (collection.find())
palata {"Tila": "okei","data": []}

Poistoreitti ottaa sen tietyn asiakirjan tunnuksen, jonka haluat poistaa kokoelmasta.

Luo REST-sovellusliittymiä FastAPI: lla

FastAPI tarjoaa loistavan tavan rakentaa kätevästi taustapohjaisia ​​Python-verkkosovellusliittymiä. Sen sisäänrakennetut työkalut tietokantojen integrointiin ja automaattiseen API-tuotantoon tekevät prosessista yksinkertaisen.

Voit jopa ottaa tämän askeleen pidemmälle ja rakentaa täysimittaisia ​​sovelluksia. Yritä integroida etupään asiakas käyttämällä suosittuja teknologioita, kuten React, Angular tai Vue.