Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

2. diel - Zoznámenie s FastAPI frameworkom pre Python

V minulej lekcii, Úvod do FastAPI frameworku a webových aplikácií v Pythone , sme absolvovali úvod do webových aplikácií prostredníctvom frameworku FastAPI.

V dnešnom tutoriáli webových aplikácií s frameworkom FastAPI sa vrhneme na samotný framework. Najprv si ho nainštalujeme a potom vytvoríme svoju prvú webovú aplikáciu v Pythone.

Inštalácia FastAPI

Na inštaláciu FastAPI (v kurze budeme používať verziu 0.104.0) potrebujeme Python vo verzii 3.8 alebo novšiu, s tým budeme počítať aj v kurze. Budeme potrebovať aj server, konkrétne Uvicorn. Uvicorn je Asynchronous Server Gateway Interface (ASGI) server, ktorý sa často používa na nasadenie webových aplikácií vytvorených pomocou FastAPI. Oba balíčky nainštalujeme nasledujúcimi príkazmi, ktoré vložíme do príkazového riadka terminálu:

To je zatiaľ všetko, čo budeme potrebovať. V príkazovom riadku uvidíme výstup (tu skrátený, pretože je trochu dlhý):

Pozor, musíme dodržať presné verzie modulov, komponentov a skrátka všetkých verzovaných prvkov! Vo FastAPI budeme neskôr vytvárať celkom pokročilý projekt, ktorý závisí od množstva knižníc, databázy atď. Použiť najnovšiu verziu nejakej komponenty, čo práve včera vyšla, naozaj nie je dobrý nápad. Projekt potom bez odbornej úpravy pravdepodobne nebude fungovať! Za dobrý príklad poslúži knižnica Pandas, ktorá vo verzii 2.0 stratila podporu pre metódu append(). Nahradila ju metóda concat(), samozrejme s inou syntaxou. Pri verziách knižníc, modul atď. skrátka neplatí ako napr. pri aktualizácii Windows, že chceme každý deň používať tú najnovšiu. Neustále aktualizácie všetkého by totiž vyžadovali každodenné a komplexné zmeny kódu projektu a reálne sa tak nevykonávajú. Z rovnakého dôvodu aj my aktualizujeme kurzy v pravidelných intervaloch a nové verzie k sebe potom zladíme tak, aby všetko fungovalo.

Vytvorenie projektu

Vytvoríme si pracovnú zložku pre nový projekt s názvom mysite/. FastAPI nám necháva voľnú ruku a na rozdiel od napr. Djanga nevyžaduje žiadnu konkrétnu štruktúru projektu. My si teda len v našom priečinku mysite/ vytvoríme súbor main.py. A to je všetko, zatiaľ sa nám všetok kód zmestí do jediného súboru. Ide to vážne fast, že? :)

Vytvorenie aplikácie Hello World

V nastavenom minimalizme budeme pokračovať. Podržíme sa nepísaného pravidla a ako prvú FastAPI aplikáciu vytvoríme "Hello World". Aj v tomto prípade budeme raz dvaja hotoví.

Na prvý riadok v našom main.py príde tradične špecifikácia závislostí, ktoré chceme do našej aplikácie importovať, v našom prípade zatiaľ iba:

Pod tým vytvoríme inštanciu triedy FastAPI, ktorú sme si práve naimportovali. Trieda obsahuje všetku potrebnú funkcionalitu frameworku:

Obvykle sa inštancia FastAPI ukladá do premennej pomenovanej práve ako app. Názov je v skutočnosti na nás, ide len o konvenciu. Pokiaľ ale použijeme vlastný názov, trochu sa tým zmení kód a príkaz na spustenie servera. To ale uvidíme za chvíľu.

Teraz už len vytvoríme funkciu, ktorá vráti obligátnu hlášku:

A to je celé, doslova pár riadkov a máme hotovú aplikáciu!

V prvom riadku funkcie, ktorú sme teraz napísali, je dekorátor. FastAPI ich používa na definíciu ciest (často sa tiež pre nich používajú termíny "endpoint" alebo "rúta") a operácií, teda HTTP metód, ktoré udávajú druh požiadavky a špecifikujú akciu, ktorá má byť vykonaná na nejakých zdrojoch. V našom prípade teda kód hovorí: "nižšie definovaná funkcia index() má na starosti GET požiadavky mieriace na adresu "/" ".

Všimnime si, že dekorátor app() zodpovedá našej premennej app, v ktorej je uložená inštancia FastAPI. Pokiaľ by sme si premenou pomenovali napríklad my_awesome_app, mala by naša funkcia index() dekorátor @my_awesome_app.get("/").

V druhom riadku definujeme dekorovanú funkciu index(). Slovko async hovorí, že pôjde o tzv. asynchrónnu funkciu. FastAPI ich podporuje defaultne. My ich výhody zatiaľ nepocítime, ale je určite dobré o nich vedieť. Je to jedna z predností frameworku. Vynechaním async by sa z našej index() funkcie stala bežná funkcia a fungovala by úplne rovnako.

V skratke, princíp asynchrónneho kódu umožňuje vykonávať niekoľko operácií paralelne, aby niektorá z tých pomalšie vykonávaných "nebrzdila" celú aplikáciu.

No a nakoniec v treťom riadku len vraciame požadovanú odpoveď vo formáte JSON.

Spustenie servera

Z úvodnej lekcie už vieme, že na to, aby sme mohli k našej aplikácii pristúpiť cez webový prehliadač, potrebujeme server.

Ako server budeme používať Uvicorn, ktorý sme si nainštalovali na začiatku lekcie. Spustenie servera vykonáme zadaním rovnomenného príkazu. Na to potrebujeme otvoriť príkazový riadok v priečinku mysite/, kde sa nachádza náš súbor s aplikáciou, teda main.py.

Zadáme príkaz:

Po chvíli sa do konzoly vypíše:

Všimnime si, že parameter app v uvicorn príkaze je opäť rovnaký ako názov premennej app s našou inštanciou triedy FastAPI. Názov Main naopak zodpovedá menu modulu obsahujúceho aplikáciu, v našom prípade teda main.py.

Naša aplikácia teraz beží na lokálnom serveri na adrese http://localhost:8000/. Zadáme túto adresu do svojho webového prehliadača alebo klikneme na odkaz v konzole. Uvidíme výsledok nášho snaženia:

V príkazovom riadku budeme vypisovať všetky požiadavky na server.

Pokiaľ budeme chcieť server ukončiť, stlačíme Ctrl + C.

Zdrojový kód je priložený na konci lekcie.

V nasledujúcej lekcii, Path a query parametre vo FastAPI , si vysvetlíme rozdiely medzi path a query parametrami a priblížime si význam typových anotácií a nepovinných parametrov funkcií.


 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 90x (640 B)

 

Predchádzajúci článok
Úvod do FastAPI frameworku a webových aplikácií v Pythone
Všetky články v sekcii
FastAPI - Tvorba webov v Pythone
Preskočiť článok
(neodporúčame)
Path a query parametre vo FastAPI
Článok pre vás napísal Tomáš Severa
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity