Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

REST API kūrimas dažnai yra mechaninė užduotis, apimanti daug projektavimo ir pasukimo programavimo. Laimei, tokie įrankiai kaip FastAPI gali palengvinti daug varginančių detalių.

Naudodami FastAPI galite greitai sukurti veiksmingą, pilną REST API savo CRUD programai. Naudojant MongoDB kaip duomenų šaltinį, ši pamoka padės greitai nustatyti savo API.

Kas yra FastAPI?

FastAPI yra greita ir atviro kodo Python žiniatinklio sistema, skirta kurti API. Jis teikia integruotą asinchroninių užklausų palaikymą, automatinį duomenų patvirtinimą ir automatinį API galinių taškų dokumentavimą.

FastAPI pranašumai, palyginti su kitais Python karkasais

  • „FastAPI“ yra palyginti greitesnis nei kitos sistemos, tokios kaip „Django“ ir „Flask“. Taip yra todėl, kad „FastAPI“ yra sukurtas ant asyncio – asinchroninės „Python“ įvesties / išvesties bibliotekos, kuri gali greičiau apdoroti vienalaikes užklausas.
  • instagram viewer
  • „FastAPI“ suteikia švarų ir paprastą būdą kurti API su minimaliomis pastangomis, nes tam reikia mažiau kodo nei „Flask“ ar „Django“.
  • Galiausiai „FastAPI“ leidžia lengvai generuoti galutinių taškų dokumentus. Jis naudoja „Swagger“, kad sukurtų dokumentus, kuriuos galite naudoti galiniams taškams išbandyti vykdydami užklausas ir peržiūrėdami atsakymus.

Sukurkite MongoDB duomenų bazę

Norėdami pradėti, jums reikės nustatyti MongoDB duomenų bazę vietoje. Arba galite pasirinkti paprastesnį variantą MongoDB klasterio nustatymas debesyje.

Tada, naudodami įdiegtą MongoDB grafinės vartotojo sąsajos įrankį Compass, sukurkite duomenų bazės ryšį. Spustelėkite Naujas ryšys mygtuką ir pateikite ryšio URI, kad užmegztumėte ryšį su vietiniu „MongoDB“ serveriu.

Galiausiai sukurkite naują duomenų bazę ir kolekciją, kurioje bus saugomi bandomojo API duomenys.

Nustatykite FastAPI serverį

Naudodami terminalą sukurkite projekto aplanką ir įveskite tą naują katalogą.

Šio projekto kodą galite rasti jame GitHub saugykla.

Tada patikrinkite, ar naudojate „Python“ 3.6 ar naujesnę versiją. Jei ne, įdiekite naujausią Python versija.

python -- versija

Po to įdiekite „Virtualenv“, kad sukurtumėte izoliuotą virtualią kūrimo aplinką. Tai labai rekomenduojama, nes tai leidžia išvengti konfliktų, ypač jei skirtingiems projektams naudojate skirtingas paketų versijas.

pip įdiegti virtualenv

Tada dabartiniame kataloge sukurkite virtualią aplinką, vadinamą „venv“:

virtualenv venv

Galiausiai suaktyvinkite virtualią aplinką.

# „Unix“ arba „MacOS“: 
šaltinis venv/bin/activate

# Sistemoje Windows:
 .\venv\Scripts\activate

Sukonfigūravę virtualią aplinką, įdiekite FastAPI, PyMongo ir Uvicorn paketus.

pip įdiegti fastapi pymongo uvicorn

PyMongo yra Python pagrindu sukurta biblioteka, skirta darbui su MongoDB duomenų baze. Tai suteikia API, palaikančią visas MongoDB funkcijas ir leidžiančią sąveikauti su MongoDB, nereikia rašyti neapdorotų MongoDB užklausų.

Kita vertus, Uvicorn yra asinchroninis žiniatinklio serveris, pagrįstas Python asyncio moduliu. Pagrindinė jo funkcija yra greitas „FastAPI“ serverių įkėlimas kelyje. Uvicorn naudojimas yra panašus į darbas su Nodemon.

Sukurkite FastAPI serverį

Galiausiai sukurkite paprastą „FastAPI“ serverį, kuris išklauso užklausas iš namų maršruto. Projekto aplanko šakniniame kataloge sukurkite server.py failą ir pridėkite toliau esantį kodą.

 fastapi importuoti FastAPI
programa = FastAPI ()

@app.get("/")
asyncdefnamai():
grąžinti {"žinutė": "Labas pasauli"}

Galiausiai paleiskite toliau pateiktą komandą, kad suaktyvintumėte kūrimo serverį. Uvicorn pateiks jūsų programą per 8000 prievadą.

uvicon serveris: app --reload

Eikite į priekį ir peržiūrėkite serverio atsakymą savo naršyklėje adresu http://localhost: 8000.

Sukurkite REST API naudodami CRUD operacijas

Dabar sukurkite REST API, kuri įgyvendina CRUD metodus (kurti, skaityti, atnaujinti ir ištrinti). Projekto aplanko šakniniame kataloge sukurkite keturis aplankus: konfigūraciją, modelius, maršrutus ir schemas.

├── konfigūracija
├── modeliai
├── maršrutai
├── schemos
└── server.py

1. Sukonfigūruokite duomenų bazės ryšį

Konfigūracijos kataloge sukurkite naują failą db.py ir toliau pridėkite kodą.

 pimongas importuoti MongoClient
db_connection = MongoClient("mongodb://localhost: 27017")
db = db_ryšis.duomenų bazės_pavadinimas
kolekcija = db["kolekcijos_pavadinimas"]
  • Naudokite MongoClient() metodą, kad sukurtumėte ryšį su MongoDB duomenų baze. Jis naudoja ryšio URI eilutę kaip argumentą, nurodantį MongoDB serverio pagrindinį kompiuterį ir prievadą.
  • Du kintamieji nurodo, kurią duomenų bazę ir rinkinį jūsų MongoDB serveryje serveris turi pasiekti.

2. Apibrėžkite duomenų modelį

Šis modelis nustatys duomenų bazėje esančių duomenų struktūrą, įskaitant laukus ir duomenų tipus.

Modelio kataloge sukurkite naują failą user_model.py ir toliau pridėkite kodą.

 pydantiškas importuoti Bazinis modelis 

klasėVartotojas(Pagrindinis modelis):
vardas: g
vaidmuo: str

  • Aukščiau pateiktas kodas sukuria klasę pavadinimu „User“, kuri yra „Pydantic“ bibliotekos „BaseModel“ klasės poklasis. Vartotojo klasėje yra du laukai, pavadinimas ir vaidmuo, kurių duomenų tipai nustatyti į eilutes.
  • Duomenų modeliams kurti galite naudoti Pydantic biblioteką su FastAPI. Taip pat galite jį naudoti duomenims patvirtinti, serijiniu būdu (JSON į Python) ir serializavimui (Python į JSON).

3. Apibrėžkite duomenų schemą

Iš sukurto duomenų modelio galite apibrėžti savo duomenų schemą. Schemų kataloge sukurkite naują failą: user_schema.py ir toliau pridėkite kodą.

defuser_serializer(Vartotojas) -> diktuoti:
grąžinti {
'id':str (vartotojas["_id"]),
'vardas':Vartotojas["vardas"],
"vaidmuo":Vartotojas["vaidmuo"]
}

defuser_serializer(naudotojai) -> sąrašas:
grąžinti [user_serializer (naudotojas) dėl Vartotojas in vartotojai]

4. Apibrėžkite API maršrutus

Galiausiai apibrėžkite skirtingų CRUD operacijų maršrutus.

Maršrutų kataloge sukurkite naują failą: user_routes.py ir toliau pridėkite kodą.

Pridėkite duomenis naudodami paskelbimo metodą

Norėdami pridėti duomenų, sukurkite pašto maršrutą.

 fastapi importuoti APIRouter
modeliai.vartotojo_modelis importuoti Vartotojas
schemas.user_schema importuoti user_serializer
bson importuoti Objekto ID
config.db importuoti kolekcija

vartotojas = APIRouter()

@user.post("/")
asyncdefsukurti_vartotojas(vartotojas: vartotojas):
_id = collection.insert_one (diktas (vartotojas))
user = users_serializer (collection.find({"_id": _id.inserted_id}))
grąžinti {"statusas": "Gerai","duomenys": Vartotojas}

  • FastAPI suteikia APIRouter() metodą, kuris apibrėžia maršrutizatoriaus objektą, kuris suteikia sąsają API užklausoms teikti serveriui.
  • Nurodykite paskelbimo maršrutą, kuris sukuria naują vartotojo objektą duomenų bazėje, įterpdamas duomenis į rinkinį po to, kai jį suskirstysite. Tada išsaugokite ir perduokite įterptąjį_id, kad rinkinyje rastumėte susietus duomenis, ir galiausiai grąžinkite būseną „Gerai“ su duomenimis atsakyme, jei paskelbimo užklausa bus sėkminga.
  • Įterpimo_vienas ir paieškos metodus apibrėžia PyMongo klientas.

Dabar pridėkite toliau pateiktą kodą prie serverio.py, kad inicijuotumėte maršrutus.

 routes.user_routes importuoti Vartotojas
app.include_router (vartotojas)

Eikite į priekį ir išbandykite paskelbimo maršrutą savo naršyklėje naudodami „FastAPI“ teikiamą „Swagger UI API“ įrankį.

Skaitykite duomenis naudodami gavimo metodą

Apibrėžę pašto maršrutą ir inicijuodami maršrutus, nustatykite likusius kitus maršrutus.

@user.get("/")
asyncdefrasti_visi_naudotojai():
vartotojai = vartotojai_serializer (collection.find())
grąžinti {"statusas": "Gerai","duomenys": vartotojai}

@user.get("/{id}")
asyncdefget_one_user(id: str):
user = users_serializer (collection.find({"_id": ObjectId (id)}))
grąžinti {"statusas": "Gerai","duomenys": Vartotojas}

Apibrėžkite du gavimo maršrutus, kurie nuskaito visus kolekcijos duomenis ir nuskaito konkrečius duomenis iš rinkinio pagal ID.

Atnaujinkite duomenis naudodami pirkimo metodą

Sukurkite pirkimo maršrutą, kad atnaujintumėte saugomus duomenis duomenų bazėje.

@user.put("/{id}")
asyncdefupdate_user(id: str, naudotojas: naudotojas):
collection.find_one_and_update(
{
"_id": ObjectId (id)
},
{
„$set“: diktuoti (vartotojas)
})
user = users_serializer (collection.find({"_id": ObjectId (id)}))
grąžinti {"statusas": "Gerai","duomenys": Vartotojas}

Įdėjimo metodas naudoja ID, kad surastų konkrečius duomenis rinkinyje, ir atnaujina dokumento laukų vertę naujais duomenimis, perduotais iš API. Tada galite ieškoti atnaujintų duomenų pagal ID ir grąžinti juos API atsakyme.

Ištrinkite duomenis naudodami ištrynimo metodą

Sukurkite ištrynimo maršrutą, kad ištrintumėte saugomus duomenis duomenų bazėje.

@user.delete("/{id}")
asyncdefdelete_user(id: str):
collection.find_one_and_delete({"_id": ObjectId (id)})
vartotojai = vartotojai_serializer (collection.find())
grąžinti {"statusas": "Gerai","duomenys": []}

Ištrynimo maršrutas paima konkretaus dokumento, kurį norite ištrinti iš kolekcijos, ID.

Sukurkite REST API naudodami FastAPI

„FastAPI“ yra puikus būdas patogiai kurti „Python“ žiniatinklio API. Dėl integruotų duomenų bazių integravimo ir automatinio API gamybos įrankių šis procesas yra paprastas.

Jūs netgi galite žengti žingsnį toliau ir kurti visavertes programas. Pabandykite integruoti priekinį klientą naudodami tokias populiarias technologijas kaip „React“, „Angular“ ar „Vue“.