FastAPI, Python framework koji omogućava razvoj veb API-ja, stekao je veliku popularnost poslednjih godina.
API (Application Programming Interface) predstavlja temelj moderne arhitekture. Omogućava modularizaciju i razdvajanje aplikacija. To omogućava brzo kreiranje aplikacija i olakšava njihovo održavanje.
Stoga, učenje FastAPI-ja je odlična ideja ako planirate da koristite Python za razvoj veb aplikacija. Ovaj članak će vas upoznati sa svim osnovama FastAPI-ja.
Šta je FastAPI?
FastAPI je veb framework baziran na Python-u. Poslednjih godina privukao je značajnu pažnju. Njegova razvojna struktura slična je Flask-u, koji je bio najpopularniji izbor za one koji su želeli da uđu u Python veb razvoj.
FastAPI je jednostavan za upotrebu, a njegova dokumentacija je jasna i laka za praćenje. Tehnološki giganti kao što su Microsoft, Netflix i Uber koriste FastAPI.
FastAPI ima sve funkcije koje bi programeri API-ja očekivali, ali nije ograničen samo na njih. Može se koristiti za montiranje pozadinskih WSGI aplikacija, što većina korisnika ne zna.
Primarna svrha FastAPI-ja je, kao što mu i ime govori, izgradnja krajnjih tačaka API-ja. Ovo se može postići jednako efikasno kao i vraćanje podataka iz Python rečnika u JSON formatu ili korišćenjem OpenAPI interaktivnog korisničkog interfejsa Swagger.
FastAPI nije ograničen samo na API-je. Može se koristiti za skoro sve što veb framework radi, od isporuke veb stranica pomoću Jinja2 šablonskog mehanizma do pokretanja aplikacija koje koriste WebSockets.
Prednosti FastAPI-ja uključuju:
- FastAPI vam omogućava da potvrdite tipove podataka programera, čak i kada koristite ugnežđene JSON upite.
- Nudi funkciju automatskog dovršavanja koda, što omogućava brže kreiranje aplikacija uz manje napora.
- Kompatibilan je sa rečnikom OpenAPI i JSON sheme, što vam omogućava da proverite validnost i komentarišete JSON dokumente.
- FastAPI vam omogućava da brzo kreirate GraphQL API koristeći Python biblioteku pod nazivom graphene–python.
- FastAPI je kompatibilan sa OAuth 2.0, kao i sa eksternim provajderima autentifikacije.
Nedostaci FastAPI-ja uključuju:
- FastAPI je relativno nov framework, pa je zajednica za podršku još uvek mala. Nema dovoljno edukativnog materijala kao što su knjige, kursevi ili tutorijali.
- Budući da moramo da povežemo sve komponente u FastAPI-ju, glavna datoteka može postati prevelika ili pretrpana.
Jedinstvene karakteristike FastAPI-ja
Ovo su jedinstvene karakteristike koje čine FastAPI jednim od najpopularnijih Python veb framework-a do sada.
- Visoke performanse: FastAPI je efikasniji od drugih Python framework-a. FastAPI-jev framework fokusiran na brzinu čini ga superiornim izborom. Sve se svodi na veću brzinu i bolje performanse korišćenjem Starlette funkcija, kreiranjem API-ja i generisanjem koda spremnog za produkciju.
- Brzo kodiranje: Programeri ne moraju da kreiraju ništa novo pomoću kodova spremnih za produkciju. Ovo ubrzava proces za otprilike 200% do 300%. FastAPI se zasniva na Starlette-u i ima mnogo više funkcija koje se mogu koristiti za kreiranje API-ja za validaciju i serijalizaciju podataka. Framework već ima sve potrebne komponente, smanjujući vreme potrebno za kodiranje.
- Minimalne greške: Framework ima funkciju automatskog dovršavanja koja automatski ubacuje većinu koda u blokove. To minimizira mogućnost grešaka i poboljšava kvalitet rezultata.
- Lako za razumevanje: FastAPI ne odstupa od modernog Python-a. To je modifikovana verzija Python-a 3.6 i ne sadrži novu sintaksu. Framework može da koristi svako ko dobro razume jezik.
- Minimalan napor: FastAPI automatski generiše OpenAPI dokumentaciju uz minimalan napor programera. Ove informacije se mogu naći u direktorijumu aplikacije /docs. Dokumentacija sadrži detaljne informacije o krajnjim tačkama API-ja, povratnim kodovima, parametrima odgovora i drugim detaljima.
- Podrška editoru: Sve komponente framework-a dizajnirane su sa automatskim dovršavanjem koda na umu. Jednostavan je, omogućavajući programerima da generišu kod spreman za produkciju. Takođe možete testirati kod direktno iz pregledača pomoću interaktivne dokumentacije.
- Otvoreni standardi: FastAPI-jev Python veb framework predstavlja veliku prednost. Framework je kompatibilan sa OpenAPI-jem, ranije poznatim kao Swagger, što olakšava kreiranje API-ja.
Instalacija FastAPI-ja
Sledi jednostavan postupak za instaliranje FastAPI-ja na Linux ili Windows sistemima.
#1. Instalacija FastAPI-ja na Linux-u
Instalirajte Python 3 na Linux koristeći sledeću naredbu:
sudo apt install python3
Instalirajte pip na Linux koristeći sledeću naredbu:
sudo apt install python3-pip
Zatim instalirajte FastAPI na Linux:
pip install fastapi
Takođe će vam biti potreban ASGI server. Instalirajte uvicorn koristeći pip:
pip install "uvicorn[standard]"
#2. Instalacija FastAPI-ja na Windows-u
Instalirajte Python 3 na Windows pomoću Microsoft Store-a. Ovo će takođe instalirati pip.
Zatim instalirajte FastAPI na Windows:
pip install fastapi
Konačno, instalirajte ASGI server uvicorn:
pip install "uvicorn[standard]"
Upotreba FastAPI-ja u novom dobu
Evo nekoliko upotreba FastAPI-ja u novom dobu:
Automatska dokumentacija
Dokumentacija o tipovima API-ja i krajnjim tačkama je neophodna. Ovaj problem se može rešiti korišćenjem OpenAPI, Swagger UI i ReDoc. Oni se automatski uključuju u FastAPI. Ovo vam omogućava da se fokusirate na svoj kod i da ne podešavate alate.
Tipiziran Python
FastAPI koristi deklaracije tipa Python 3.6 (zahvaljujući Pydantic-u). To znači da koristi Python funkciju koja vam omogućava da odredite tip i tip promenljive. Ovaj framework to odlično koristi, pružajući vam sjajnu podršku za editore. Automatsko dovršavanje koda radi izvanredno.
Validacija
Pydantic već integriše validaciju u ovaj framework. Validacija standardnih Python tipova i validacija prilagođenih polja može se obaviti.
Sigurnost i autentifikacija
Ovo je važan deo svakog API-ja. Često samo ponavljamo kod, pa zašto ne bismo deo toga uključili u naš framework? FastAPI radi upravo to.
Biblioteka podržava HTTP Basic, OAuth2 tokene (JWT tokeni) i API ključeve zaglavlja.
Asinhrona priroda
FastAPI, po default-u, podržava asinhrone krajnje tačke, čineći vaš kod jednostavnijim i efikasnijim. Ovo je značajna prednost u odnosu na Flask.
FastAPI u odnosu na Flask: ključne razlike
Razlike u upotrebi
FastAPI je platforma punog steka koja pruža sve što vam je potrebno za izgradnju vašeg API-ja. Flask, s druge strane, je mikro framework i ne nudi sve iste karakteristike kao FastAPI. Flask može biti koristan ako treba da napravite prototip ideje ili brzo napravite jednostavnu veb aplikaciju.
Flask i FastAPI se veoma razlikuju po načinu na koji se koriste. Flask framework se može koristiti za prototip novih ideja i aplikacija, dok se FastAPI framework može koristiti za pravljenje API-ja. Možete brzo da napravite backend server bez posebnog znanja o kodiranju.
Male veb stranice i veb aplikacije
FastAPI je jednostavan za upotrebu, lagan i može se koristiti za razvoj veba i aplikacija malih razmera. Uključuje objektno-relacioni sloj (ORM), koji upravlja objektima podataka unutar aplikacije, tako da im možete brzo pristupiti putem kodiranja.
ORM sloj vodi evidenciju o vašim bazama podataka i omogućava vam da zaboravite da ih ručno ažurirate kada se nove informacije dodaju, menjaju ili brišu sa veb lokacije ili aplikacije.
WSGI naspram ASGI
Možda ste primetili osnovnu razliku: Flask koristi WSGI za svoj standardni interfejs, dok FastAPI koristi ASGI. Kao što je ranije pomenuto, WSGI obrađuje zahteve sinhrono. Zahtevi se obrađuju uzastopno. Ne može se početi sa sledećim dok se ne završi prethodni zadatak.
ASGI asinhrono obrađuje zahteve. To omogućava da se zadaci izvršavaju sopstvenim tempom i ne moraju da čekaju na druge.
Zajednica
Još jedna razlika je zajednica. Flask je zajednica koja postoji duže od FastAPI-ja. To znači bolju dokumentaciju i eksternu pomoć od drugih koji pišu o Flask-u.
FastAPI je relativno nov projekat, pa zajednica tek treba da raste. To znači da iako postoji dovoljno dokumentacije, nema mnogo pomoći od drugih.
Sledi sažeta tabela za poređenje FastAPI-ja i Flask-a:
FastAPI | Flask |
Validacija podataka je ugrađena. | Nema validaciju podataka. |
Podrška za asinhrone zadatke je dostupna. | Podrška za asinhrone zadatke nije dostupna. |
Implementira ASGI specifikacije. | Podržava WSGI aplikacije. |
Automatska podrška za dokumente. | Ručna podrška za dokumentaciju. |
Poruka o grešci se prikazuje u JSON formatu. | Poruka o grešci se prikazuje na HTML stranicama. |
Manja zajednica za podršku. | Velika zajednica za podršku. |
FastAPI ili Flask: Koji odabrati?
FastAPI i Flask mogu brzo da podese Python veb servere i aplikacije za nauku o podacima. Oba zahtevaju sličan napor za implementaciju, ali koji je framework najbolji za vaš sledeći projekat?
FastAPI je najbolja opcija kada su brzina i performanse od najveće važnosti. Ovaj framework je najbolji ako gradite CDN i očekujete značajan promet. FastAPI vam omogućava da preuzmete framework i odmah ga koristite. Šablon projekta će vam uštedeti vreme i pomoći vam da brže stignete do rezultata.
FastAPI je bolja opcija od Flask-a kada pravite API-je. Ovo je posebno tačno kada se uzmu u obzir mikroservisi i druga razmatranja. Flask je najbolji izbor ako već imate mnogo alata izgrađenih oko ovog framework-a.
Zaključak
Dakle, to je sve o FastAPI-ju. FastAPI nudi superiornu brzinu i performanse. Ovaj framework je najbolji ako gradite svoju mrežu za isporuku sadržaja i očekujete visok promet. Inovativni framework i šablon projekta će vam pomoći da uštedite vreme.
Flask bi mogao biti bolji za kreiranje API-ja, posebno mikroservisa. FastAPI je takođe bolji od Flask-a. Flask je bolji izbor ako ga već intenzivno koristite.
Takođe možete istražiti neke popularne Python framework-e za kreiranje API-ja.