diff --git a/docs/hu/docs/features.md b/docs/hu/docs/features.md new file mode 100644 index 0000000000..8cb89b209b --- /dev/null +++ b/docs/hu/docs/features.md @@ -0,0 +1,198 @@ +# Funkciók + +## FastAPI funkciók + +**FastAPI** a következőket nyújtja: + +### Nyílt szabványok alapján + +* OpenAPI az API fejlesztéshez, ebbe beletartozik az útvonal műveletek, paraméterek, "test" lekérések, biztonság, stb. deklarálása +* Automatikus adat modell dokumentáció JSON Schema-val (mivel az OpenAPI maga is JSON Schema-n alapul). +* A fejlesztés ezen szabványokat fejben tartva történt, aprólékos tanulmányt követve, nem csak egy utógondolatként rápakolva egy rétegként. +* Ez automatikus **kliens kód generálást** is engedélyez számos programozási nyelvben. + +### Automatikus documentáció + +Interaktív API dokumentáció és webes felhasználói felület. Mivelhogy a keretrendszer az OpenAPI-on alapul, több lehetőség is van, ezek közül 2 alapból elérhető. + +* Swagger UI, interaktív felfedezéssel, hívd meg és teszteld az API-odat közvetlenül a böngésződből. + +![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png) + +* Alternatív API dokumentáció ReDoc-kal. + +![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png) + +### Csupán Modern Python + +Minden a standard **Python 3.6 típus** deklarációkon alapul (Pydantic-nak köszönhetően). Nem kell új szintaxist megtanulni. Csakis standard modern Python. + +Ha szükséged van egy 2 perces frissítőre a Python típusokról (még akkor is, ha em használod a FastAPI-t), nézd meg a rövid oktató videót: [Python Típusok](python-types.md){.internal-link target=_blank}. + +Standard Python kód típusokkal: + +```Python +from datetime import date + +from pydantic import BaseModel + +# Declare a variable as a str +# and get editor support inside the function +def main(user_id: str): + return user_id + + +# A Pydantic model +class User(BaseModel): + id: int + name: str + joined: date +``` + +Amit aztán így lehet használni: + +```Python +my_user: User = User(id=3, name="John Doe", joined="2018-07-19") + +second_user_data = { + "id": 4, + "name": "Mary", + "joined": "2018-11-30", +} + +my_second_user: User = User(**second_user_data) +``` + +!!! info + `**second_user_data` jelentése: + + Átadod a `second_user_data` szótár kulcsait és a hozzájuk tartozó értékeket közvetlenül mint kulcs-érték paramétereket , a fenti kóddal ekvivalens: `User(id=4, name="Mary", joined="2018-11-30")` + +### Kódszerkesztés segítség + +A keretsrendszer úgy lett felépítve, hogy könnyű és egyértelmű legyen használni, minden egyes döntés számos fejlesztői környezetben le lett tesztelve még a fejlesztés előtt, hogy a legjobb fejlesztői élményt nyújtsa. + +A legutóbbi Python fejlesztői kutatásban látszott, hogy a legtöbbet használt funkció az "automatikus kitöltés" volt. + +Az egész **FastAPI** keretrendszer azon alapul, hogy ezt az igényt kielégítse. Az automatikus kitöltés működik mindenhol. + +Nagyon ritkán kell majd csak visszajönnöd a dokumentációhoz. + +A fejlesztői környezeted így tud neked segíteni: + +*Visual Studio Code-ban: + +![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png) + +*PyCharm-ban: + +![editor support](https://fastapi.tiangolo.com/img/pycharm-completion.png) + +Olyan kódot is ki tud egészíteni, amire nem is gondoltál volna. Pl. a `price` kulcsot a JSON "test"-ben (ami akár beágyazva is lehetne) ami a kérésből jön. + +Nincs többé elírt kulcsnév, ugrálás dokumentációk között, vagy görgetés fel és le, hogy vajon `username`-et vagy `user_name`-et kell használni. + +### Rövid + +Magától érthetődő **alapbeállítások** mindenhol, de opcionális változtatások elérhetők akárhol. Az összes paramétert finomhangolatod aszerint, hogy mire van szükséged, és hogy az API-nak mire van szüksége. + +De alapból minden **"csak működik, és kész"**. + +### Érvényesítés + +* Érvényesítés majdnem mindegyik (vagy az összes?) Python **adattípusra**, többek között: + * JSON objektumok (`dict`). + * JSON tömb (`list`) definiáló tárgytípusok. + * Szöveg (`str`) mezők, minimális és maximális hosszak megadása. + * Számok (`int`, `float`) minimális és maximális hosszak megadásával, stb. + +* Érvényesítés egzotikusabb típusra, például: + * Link(URL). + * Email. + * Globálisan egyedi azonosító (UUID). + * ...és még sok más. + +Az összes érvényesítés a **Pydantic** segítségével történik. + +### Biztonság és azonosítás + +Biztonság és azonosítás integrálva. Kompromisszumok nélkül az adatbázisokkal vagy adatmodellekkel. + +Az OpenAPI-ban meghatározott összes biztonsági séma, beleértve: + +* HTTP Basic. +* **OAuth2** (**JWT tokenekkel** is). Tekintse meg az [OAuth2 with JWT] (tutorial/security/oauth2-jwt.md){.internal-link target=_blank} oktatóanyagát. +* API kulcsok: + * Fejlécek. + * Paraméterek lekérdezése. + * Cookie-k stb. + +Plusz a Starlette összes biztonsági funkciója (beleértve a **session cookie-kat**). + +Mindegyik újrafelhasználható eszközként és komponensként készült, amelyek könnyen integrálhatók a rendszerekkel, adattárolókkal, relációs és NoSQL adatbázisokkal stb. + +### Függőség Injekció + +A FastAPI egy rendkívül könnyen használható, de rendkívül hatékony függőség-injekció rendszert tartalmaz. + +* Még a függőségeknek is lehetnek függőségei, létrehozva a függőségek hierarchiáját vagy **"grafikonját"**. +* Mindent **automatikusan kezel** a keretrendszer. +* Minden függőség igényelhet adatokat a kérésekből, és **kibővítheti az útvonalművelet** megszorítását és az automatikus dokumentációt. +* **Automatikus érvényesítés** még a függőségekben meghatározott *elérési út* paramétereknél is. +* Komplex felhasználói hitelesítési rendszerek támogatása, **adatbázis-kapcsolatok** stb. +* **Nincs kompromisszum** adatbázisokkal, frontendekkel stb. De mindegyikkel könnyen integrálható. + +### Korlátlan "bővítmények" + +Vagy más módon, nincs szükség rájuk, importálja és használja a szükséges kódot. + +Minden integrációt úgy terveztek meg, hogy olyan egyszerűen használható legyen (függőségekkel), hogy létrehozhat egy „beépülő modult” az alkalmazásához 2 kódsorból, ugyanazzal a struktúrával és szintaxissal, mint az *elérési út műveleteinél*. + +### Tesztelve + +* 100% tesztlefedettség. +* 100%-ban jegyzett kódbázishoz. +* Gyártási alkalmazásokban használják. + +## A Starlette jellemzői + +A **FastAPI** teljes mértékben kompatibilis a Starlette-tel (és azon alapul) . Tehát minden további Starlette kód is működni fog. + +A „FastAPI” valójában a „Starlette” alosztálya. Tehát, ha már ismeri vagy használja a Starlette-et, a legtöbb funkció ugyanúgy fog működni. + +A **FastAPI** segítségével megkapja a **Starlette** összes funkcióját (mivel a FastAPI csak Starlette szteroidokon): + +* Komolyan lenyűgöző teljesítmény. Ez az egyik leggyorsabb Python-keretrendszer, amely egyenrangú a **NodeJS-szel** és **Go-val**. +* **WebSocket** támogatás. +* Folyamat közbeni háttérfeladatok. +* Indítási és leállítási események. +* HTTPX-re épülő tesztkliens. +* **CORS**, GZip, statikus fájlok, streaming válaszok. +* **Session és Cookie** támogatás. +* 100%-os tesztlefedettség. +* 100%-os típusú megjegyzésekkel ellátott kódbázis. + +## Pydantic funkciók + +A **FastAPI** teljes mértékben kompatibilis Pydantic-kal, sőt, azon alapul. Tehát minden további Pydantic kód is működni fog. + +Beleértve a Pydantic alapú külső könyvtárakat is, mint ORM, ODM adatbázisokhoz. + +Ez azt is jelenti, hogy sok esetben ugyanazt az objektumot, amit egy kérésből kapunk, **közvetlenül az adatbázisnak** továbbíthatjuk, mivel minden automatikusan érvényesítésre kerül. + +Ugyanez fordítva is érvényes, sok esetben az adatbázisból kapott objektumot **közvetlenül a kliensnek** adhatod át. + +A **FastAPI** segítségével megkapja a **Pydantic** összes funkcióját (mivel a FastAPI a Pydanticon alapul az összes adatkezeléshez): + +**Nincs agyafúrás**: + * Nincs új megtanulni való sémadefiníciós mikronyelv. + * Ha ismeri a Python típusokat, tudja, hogyan kell használni a Pydantic-ot. +* Szépen kapcsolódik az **IDE/linter/brain **-hez: + * Mivel a pydantikus adatstruktúrák csak az Ön által meghatározott osztályok példányai; Az automatikus kiegészítésnek, a lintingnek, a mypy-nek és az intuíciónak mind megfelelően működnie kell az ellenőrzött adatokkal. +* Érvényesítsen **összetett struktúrákat**: + * Hierarchikus Pydantic modellek, Python "gépelés" listák és szótárak stb. használata. + * Az érvényesítők pedig lehetővé teszik az összetett adatsémák egyértelműen és egyszerűen definiálását, ellenőrzését és JSON-sémaként dokumentálását. + * Mélyen **beágyazott JSON** objektumokkal rendelkezhet, és mindegyiket ellenőrizheti és megjegyzésekkel látja el. +**Bővíthető**: + * A Pydantic lehetővé teszi egyéni adattípusok meghatározását, vagy kiterjesztheti az érvényesítést módszerekkel a validátor dekorátorral díszített modelleken. +* 100%-os tesztlefedettség.