Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - Úvod do FastAPI frameworku a webových aplikací v Pythonu

Vítejte u úvodního tutoriálu kurzu webových aplikací s frameworkem FastAPI. V jeho průběhu se naučíme vytvářet dynamické webové aplikace. Nejprve začneme velmi jednoduchými příklady práce s API a od nich se dostaneme k filmotéce s vlastní databází, správou uživatelů a zkrátka vším, co by pořádná webová aplikace měla umět.

Požadavky pro úspěšné absolvování kurzu

Kurz je určen začátečníkům ve webových technologiích, předpokládá ovšem znalosti alespoň v rozsahu kurzů:

Vhodná je rovněž alespoň částečná znalost HTML, CSS a JavaScriptu z kurzů:

Užitečný nám bude také alespoň obecný přehled v databázích.

Framework FastAPI

FastAPI logo - FastAPI - Tvorba webů v Pythonu

FastAPI je open-source webový mikroframework, který byl poprvé vydán v roce 2018. Jak už jeho název napovídá, nejčastěji se používá k tvorbě API. Pomocí externích nástrojů jej lze ale využít také ke tvorbě komplexních webových aplikací. "Fast" v názvu odkazuje na skutečnost, že taková API jsou pak velmi rychlá (údajně srovnatelná s těmi psanými v Go nebo NodeJS a mnohem rychlejší než ta psaná v jiných Python frameworcích) a že jejich vývoj je též velmi rychlý. Popularita FastAPI roste každým rokem a je již srovnatelná s nejpopulárnějšími, ale mnohem staršími Python frameworky Flask a Django.

Mikroframework Flask je syntaxí velmi podobný FastAPI a nabízí podobné množství svobody, ale podobně jako FastAPI také v základu neobsahuje zdaleka tolik funkcí. Naproti tomu Django je tzv. "batteries-included" framework, který má již v základu spoustu funkcionality, včetně správy databáze, administrace a podobně.

Než začneme se samotným FastAPI, uvedeme si obecně problematiku webových aplikací. Když už se je chystáme vytvářet, měli bychom vědět, jak fungují 😊

Výhody webových aplikací

Není náhoda, že se většina dnešních aplikací píše pro web. Je to z toho důvodu, že webové aplikace mají oproti klasickým (desktopovým) mnoho výhod, jejich vývoj je levnější a vydělají obvykle více peněz nebo přitáhnou více uživatelů. Abychom tyto výhody a principy pochopili, udělejme si krátkou odbočku do historie a vysvětleme si, co ke vzniku webových aplikací vůbec vedlo.

Mainframy

Když se počítače poprvé dostávaly mezi lidi a do firem, byly velmi drahé. Bylo nepředstavitelné, že by měl každý zaměstnanec svůj počítač. Z toho důvodu se zakoupil jeden centrální počítač (který byl na tu dobu velmi výkonný) a k tomuto centrálnímu počítači se jednoduše řečeno připojilo několik klávesnic a monitorů. Všichni zaměstnanci pracovali současně na tomto jednom počítači, který je obsluhoval.

Kdyby se tedy např. jednalo o kancelářskou aplikaci Word, každý uživatel by měl na mainframe nějakou svou složku s dokumenty a všichni by pracovali s tím jedním Wordem, který je na mainframu nainstalovaný:

Architektura mainframu - FastAPI - Tvorba webů v Pythonu

Výhody této architektury jsou následující:

  • snadná správa – aby mohli uživatelé používat nějakou aplikaci, stačí tuto aplikaci nahrát na mainframe. V tu chvíli je přístupná všem uživatelům. Totéž platí pro aktualizaci, aktualizujeme mainframe a všichni již používají novou verzi aplikace,
  • bezpečnost – všechna data jsou uložena v databázi na mainframu, nikoli na stanicích zaměstnanců. Totéž platí o samotných aplikacích, k jejich kódu se nikdo nedostane.

Máme tu samozřejmě i nevýhody:

  • nízký výkon a vysoká cena – mainframe vyžaduje vysoký výkon a zpracovává úplně všechny úlohy aplikace. Jeho provoz je nákladný.

Mainframy se již téměř nepoužívají, ale dodnes ještě v některých podnicích fungují.

Desktopové aplikace

Jak se počítače rozšiřovaly mezi menší firmy, a dokonce do domácností, klesala samozřejmě jejich cena. Osobní počítač si již mohl dovolit každý. Mainframům odzvonilo a nebyl důvod, aby každý zaměstnanec nebo obecně uživatel neměl svoji aplikaci ve svém počítači.

Když opět použijeme náš příklad s Wordem, v tomto případě má každý uživatel své dokumenty a svůj Word ve vlastním počítači (desktopu):

Architektura desktopových aplikací - FastAPI - Tvorba webů v Pythonu

Výhody desktopových aplikací jsou:

  • vysoký výkon – veškerý výkon aplikace zajišťuje klientský počítač. Někdy v tomto případě hovoříme o tzv. tlustém klientovi. Tehdy aplikace komunikuje se serverem, který se stará jen o zasílání dat a neřeší např. vykreslování formulářů, což za něj dělá právě aplikace.

Nevýhody:

  • složitá správa – pokud vydáme novou verzi naší aplikace, musíme zajistit, aby si každý klient aktualizoval svůj počítač. To se nám samozřejmě nepodaří, a proto řešíme problémy se starými verzemi. Stahování aktualizací je pro uživatele otravné,
  • bezpečnost – jelikož je u klienta přítomná celá aplikace, může se ji snažit disassemblovat (hackovat), což není u dnešních vysokoúrovňových jazyků příliš velký problém. Může nám z aplikace ukrást části zdrojových kódů nebo nějaká data.

Webové stránky

S rozšířením internetu nejprve vzniklo obrovské množství statických webových stránek. Webová stránka není nic jiného než textový soubor, ve kterém jsou pomocí značek (tagů) označené určité části textu jako nadpis, odstavec, obrázek a podobně. Výsledná stránka je (jak již bylo řečeno) statická. Nemůže se tedy měnit, je to pouze elektronický dokument, který můžeme jen číst.

HTML stránky (HTML je značkovací jazyk) jsou jednoduše uložené na serveru. Jakmile klient (uživatel s webovým prohlížečem) pošle požadavek, server mu jednoduše vrátí přesně tu stránku, kterou má uloženou. Této architektuře se říká klient–server:

Architektura klient-server - FastAPI - Tvorba webů v Pythonu

Tato architektura se nápadně podobá mainframu. Vracíme se tedy ke kořenům a získáváme následující výhody:

  • malá zátěž – server pouze zasílá HTML stránky a již neřeší jejich zobrazení, neřeší ovládání klávesnice uživatele, jeho monitoru a podobně. To vše se děje na klientském počítači,
  • snadná správa – jakmile změníme obsah na serveru (např. přidáme nějaký dokument), uvidí ho tam okamžitě všichni uživatelé,
  • bezpečnost – pokud chceme zakázat přístup k nějakým dokumentům, klient se k nim prostě nemá jak dostat, jelikož jsou na serveru.

Nevýhodou je samozřejmě to, že server umí zasílat pouze statické HTML stránky. Neexistuje způsob, jak serveru odeslat nějaká data a na jejich základě dostat výstup (třeba nechat na stránce vzkaz v diskuzi, hlasovat v anketě nebo na stránce zobrazit, kdo má dnes svátek).

Webové aplikace

Po obrovském rozmachu internetu a webových stránek se hledaly způsoby, jak do stránek přidávat nějakou dynamickou funkčnost. Tyto pokusy postupem času došly tak daleko, že jsme v dnešní době schopni dosáhnout toho, aby se webová stránka chovala úplně stejně jako desktopová aplikace (třeba MS Word z desktopu je na webu dostupný jako Office 365 nebo např. přes Google Docs). Takové webové stránce se říká webová aplikace.

Webové aplikace fungují tak, že se klient zeptá serveru na určitý dokument. Na serveru ale běží program, který dokáže vygenerovat do stránky to, co uživatel požaduje. Stránka tedy na serveru již neleží, ale je dynamicky vytvářena podle toho, co uživatel chce. Právě FastAPI nám umožňuje takové skripty v Pythonu na serveru provozovat:

Architektura webových aplikací v Pythonu - FastAPI - Tvorba webů v Pythonu

Scénář je často následující:

  1. Uživatel vyťuká do prohlížeče URL adresu (třeba eshop.cz/tiskarna-epson-123) a tím pošle požadavek serveru.
  2. Server zavolá FastAPI.
  3. FastAPI zpracuje požadavek (v našem případě chce uživatel vypsat informace o tiskárně). Připojí se k databázi a načte data, která chce klient. Na základě dat vygeneruje webovou HTML stránku.
  4. Hotová stránka je zaslána klientovi. Ten vidí již jen statickou webovou stránku, která však byla dynamicky vytvořená podle jeho požadavku.

Všechna data jsou v databázi a webová aplikace, v našem příkladu nějaký e-shop, má rozhraní, přes které může personál jednoduše přidávat nové produkty, upravovat jejich cenu a podobně. Je jasné, že kdyby data nebyla v databázi, ale každý produkt měl svou statickou HTML stránku, bylo by extrémně obtížné takovou spoustu stránek spravovat. Navíc by se potom nedalo pomocí skriptu třeba hledat podle ceny, psát k produktům komentáře a podobně.

Právě jsme si tedy popsali princip dynamického webu a také jeho příklad. Jaké jsou tedy výhody webových aplikací? Podívejme se na ně:

  • snadná správa – novou verzi aplikace nahrajeme a v tom okamžiku ji používají úplně všichni,
  • bezpečnost – web i databáze jsou na serveru, a pokud aplikace neobsahuje nějaké bezpečnostní chyby, je velmi nesnadné ji ukradnout,
  • kompatibilita – jelikož na web přistupujeme přes webový prohlížeč, vůbec nás nezajímá operační systém klienta, naše aplikace funguje prakticky všude, dokonce i na mobilu,
  • nízká zátěž – server není zatěžován např. vlastním zobrazováním stránek, to dělá webový prohlížeč,
  • velká uživatelská základna – lidé jsou líní stahovat a instalovat. U webové aplikace jen kliknou na odkaz a již s ní pracují.

Uživatelů, kteří by používali tutéž aplikaci, kdyby byla na desktopu místo na webu, by bylo podstatně méně. A právě kvůli uživatelům přece aplikace píšeme. Ať už jsou zadarmo, nebo placené, vždy chceme, aby je používalo co nejvíce lidí. Toto je hlavní důvod, proč se v poslední době dělá v podstatě veškerý software webový.

Je tedy vidět, že webové aplikace jsou budoucnost. A kdo je umí, ten se bude mít dobře. Asi jedinou nevýhodou je, že jejich vývoj je o něco náročnější než u aplikací desktopových. Je to z toho důvodu, že web byl zprvu navržen pro statické dokumenty a existují určitá omezení, která se musí obcházet. Nicméně technologie se stále vyvíjejí a mnoho věcí jde oproti minulosti již podstatně snáz. Vděčíme za to zejména novým standardům HTML5 a CSS3.

Složitější webové aplikace jsou většinou ještě doplněny dalším programovacím jazykem – JavaScriptem. Ten běží v klientském počítači a zpracovává vizuální část aplikace. Zde na ITnetworku je v JavaScriptu naprogramované např. navigační menu. JavaScript slouží spíše pro doplňky v uživatelském rozhraní a je podstatný až u složitých webových aplikací.

To by bylo k úvodu vše.

V další lekci, Seznámení s FastAPI frameworkem pro Python, si nainstalujeme FastAPI a vytvoříme svou první webovou aplikaci Hello World.


 

Všechny články v sekci
FastAPI - Tvorba webů v Pythonu
Přeskočit článek
(nedoporučujeme)
Seznámení s FastAPI frameworkem pro Python
Článek pro vás napsal Tomáš Severa
Avatar
Uživatelské hodnocení:
10 hlasů
Aktivity