FastAPI Vysvětlení za 5 minut nebo méně

Co je to FastAPI a proč je tak populární?

FastAPI, moderní framework pro Python, je určený pro vývoj webových API a v posledních letech získává na velké popularitě.

API, neboli aplikační programovací rozhraní, jsou klíčovým prvkem moderních architektur. Umožňují modulární design a oddělení jednotlivých částí aplikací. To usnadňuje rychlý vývoj a zjednodušuje údržbu softwaru.

Proto, pokud plánujete využít Python pro vývoj webových aplikací, je znalost FastAPI velmi cenná. Tento článek vám přiblíží základy tohoto frameworku.

Co přesně je FastAPI?

FastAPI je webový framework postavený na Pythonu, který si v posledních letech získal značnou pozornost. Svou strukturou připomíná populární Flask, který byl dlouho preferovanou volbou pro vývojáře, kteří začínali s webovým vývojem v Pythonu.

FastAPI se vyznačuje snadným použitím a srozumitelnou dokumentací. Mezi technologické giganty, kteří ho používají, patří například Microsoft, Netflix a Uber.

Ačkoliv je primárně určen pro tvorbu API, dokáže toho mnohem víc. Můžete ho využít například i pro připojení zpětného WSGI, o kterém však mnoho uživatelů neví.

Jeho hlavním cílem je efektivní vytváření API endpointů. Umožňuje snadno vracet data z Python slovníků ve formátu JSON nebo využít interaktivní uživatelské rozhraní Swagger OpenAPI.

FastAPI se neomezuje jen na API. Dá se s ním vyvíjet téměř cokoli, co webové frameworky umí – od zobrazování webových stránek s šablonovacím enginem Jinja2 po obsluhu aplikací založených na WebSockets.

Mezi hlavní výhody FastAPI patří:

  • Umožňuje validaci datových typů i u vnořených JSON dotazů.
  • Disponuje funkcí automatického doplňování, která urychluje vývoj a snižuje potřebné úsilí.
  • Je kompatibilní se slovníkem OpenAPI a JSON Schema, což umožňuje snadnou validaci a anotaci JSON dokumentů.
  • Umožňuje rychlou tvorbu GraphQL API díky knihovně graphene-python.
  • Je kompatibilní s OAuth 2.0 a externími poskytovateli.

Mezi nevýhody FastAPI se řadí:

  • Je relativně nový framework, takže komunita a množství výukových materiálů je menší než u zavedenějších řešení.
  • Při integraci všech komponent do jednoho souboru může dojít k jeho nadměrnému narůstání a nepřehlednosti.

Jedinečné vlastnosti FastAPI

FastAPI se odlišuje od ostatních webových frameworků díky svým jedinečným vlastnostem:

  • Vysoký výkon: Díky své rychlosti je považován za špičkový framework. Využívá funkce Starlette pro tvorbu API a optimalizaci kódu, což vede k lepšímu výkonu.
  • Rychlé kódování: Nabízí hotové komponenty, což urychluje vývoj o 200-300 %. Díky integraci s knihovnami pro validaci a serializaci dat šetří čas potřebný na kódování.
  • Minimální chyby: Funkce automatického doplňování kódu snižuje možnost chyb a zvyšuje kvalitu výstupu.
  • Snadná pochopitelnost: Využívá moderní Python 3.6 a novější bez zbytečných novinek v syntaxi. Je tedy snadno pochopitelný pro každého, kdo má znalosti Pythonu.
  • Minimální úsilí: Dokumentaci API generuje automaticky s minimálním zásahem vývojáře. Dokumentace je dostupná v adresáři aplikace/doc a obsahuje podrobné informace o endpointů, návratových kódech a parametrech.
  • Podpora editorů: Všechny komponenty jsou navrženy s ohledem na automatické doplňování kódu, což usnadňuje vývoj. Interaktivní dokumentaci lze testovat přímo v prohlížeči.
  • Otevřené standardy: Je kompatibilní s OpenAPI (dříve Swagger), což usnadňuje vytváření API.

Instalace FastAPI

Instalace FastAPI na Linuxu nebo Windows je jednoduchá:

#1. Instalace FastAPI na Linuxu

Nejprve nainstalujte Python 3:

sudo apt install python3

Následně nainstalujte pip:

sudo apt install python3-pip

Nyní nainstalujte samotný FastAPI:

pip install fastapi

A nakonec nainstalujte server ASGI, uvicorn:

pip install "uvicorn[standard]"

#2. Instalace FastAPI na Windows

Nainstalujte Python 3 z Microsoft Store, čímž se automaticky nainstaluje i pip.

Poté nainstalujte FastAPI:

pip install fastapi

A nakonec nainstalujte ASGI server uvicorn:

pip install "uvicorn[standard]"

Moderní využití FastAPI

Automatizovaná dokumentace

Dokumentace API je nezbytná. FastAPI automaticky využívá OpenAPI, Swagger UI a ReDoc, což vám umožní soustředit se na kód, a nikoli na nástroje.

Typovaný Python

FastAPI využívá typové anotace v Pythonu 3.6+ (díky Pydantic). To umožňuje definovat typ proměnné a poskytuje vynikající podporu editorům a automatickému doplňování kódu.

Validace

Pydantic, který je součástí FastAPI, umožňuje snadnou validaci jak standardních, tak i vlastních datových typů.

Zabezpečení a ověřování

Knihovna podporuje HTTP Basic, tokeny OAuth2 (JWT) a klíče API v hlavičce, což zjednodušuje implementaci zabezpečení.

Asynchronní povaha

FastAPI nativně podporuje asynchronní endpointy, což zvyšuje efektivitu kódu a představuje značnou výhodu oproti Flasku.

FastAPI vs. Flask: Hlavní rozdíly

Rozdíly v použití

FastAPI je plnohodnotný framework, který poskytuje vše potřebné pro tvorbu API. Flask je mikroframework, který nenabízí tolik funkcí. Flask je užitečný, pokud potřebujete rychle vytvořit prototyp nebo jednoduchou webovou aplikaci.

Flask se hodí pro rychlé prototypování, zatímco FastAPI je vhodný pro tvorbu API. S FastAPI lze rychle vyvíjet backend servery bez pokročilých znalostí kódování.

Malé weby a webové aplikace

FastAPI je snadný, lehký a vhodný pro vývoj malých webů a aplikací. Obsahuje ORM (Object-Relational Mapping) vrstvu pro snadný přístup k datovým objektům.

ORM vrstva sleduje vaše databáze a automaticky je aktualizuje při změnách v aplikaci.

WSGI vs. ASGI

Flask používá pro své standardní rozhraní WSGI, zatímco FastAPI používá ASGI. WSGI zpracovává požadavky synchronně, zatímco ASGI asynchronně. ASGI umožňuje plnit úkoly paralelně, což je efektivnější.

Komunita

Flask má větší a déle fungující komunitu, což znamená lepší dokumentaci a podporu od ostatních vývojářů. FastAPI je novější projekt, takže komunita je menší, i když dokumentace je dostatečná.

Shrnutí rozdílů v tabulce:

Vlastnost FastAPI Flask
Validace dat Vestavěná Není vestavěná
Podpora asynchronních úloh K dispozici Není k dispozici
Implementace ASGI WSGI
Automatická dokumentace Ano Ne
Chybové hlášky JSON HTML stránky
Podpora komunity Menší Větší

FastAPI nebo Flask: Co si vybrat?

Oba frameworky jsou vhodné pro vývoj webových serverů a aplikací pro datovou vědu. Jaký framework je nejlepší pro váš projekt?

FastAPI je lepší volbou, pokud záleží na rychlosti a výkonu. Hodí se pro tvorbu CDN a aplikace s vysokým provozem. Nabízí šablonu projektu, která urychluje vývoj.

FastAPI je vhodnější pro tvorbu API, zejména mikroslužeb. Flask je lepší volbou, pokud již máte nástroje postavené na tomto frameworku.

Závěr

FastAPI je moderní framework s vynikající rychlostí a výkonem. Je vhodný pro tvorbu aplikací s vysokým provozem. Jeho inovativní funkce a šablona projektu šetří čas.

Flask může být vhodnější pro tvorbu API, zejména mikroslužeb. Flask je lepší volbou, pokud již máte s ním zkušenosti.

Doporučujeme prozkoumat další populární Python frameworky pro tvorbu API.