logo
  • Proces
  • Case studies
  • Blog
  • O nas
Napisz do nas
  1. Strona główna

  2. /

    Blog

  3. /

    FastAPI

FastAPI

3 minuty czytania

Tomasz Kozon

FastAPI to nowoczesny framework do tworzenia aplikacji internetowych. Został stworzony z myślą o prostym i szybkim tworzeniu aplikacji, a także o ułatwieniu pracy developerom.

Spis treści

FastAPI posiada wbudowany moduł dokumentacji

FastAPI - szybkość, bezpieczeństwo i duża społeczność

Middleware i zarządzanie stanem aplikacji

Obsługa żądań i odpowiedzi

Dependency Injection w FastAPI

Obsługa baz danych

FastAPI

Framework FastAPI stał się bardzo popularny w ostatnich latach ze względu na swoją szybkość i wysoki poziom kontroli nad pisanym kodem.

 

API budowane za pomocą FastAPI pisze się szybko ze względu na zwięzły kod, minimalną jego duplikację, a także dobrą dokumentację. FastAPI jest w pełni kompatybilne ze standardem OpenAPI.

 

Zbudowanie prostego API ogranicza się do 9 linijek kodu.

 

from typing import Optional

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
async def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}

 

FastAPI posiada wbudowany moduł dokumentacji

FastAPI posiada wbudowany moduł generujący automatycznie dokumentację zarówno w formacie Swagger jak i ReDoc. Dokonując zmian w modelach danych z wykorzystaniem klasy BaseModel z Pydantic dostajemy zaktualizowaną i opisaną dokumentację pod URLem: http://localhost:8000/docs.

 

Czy szukasz wykonawcy FastAPI ?
logo
Sprawdź case studies

FastAPI - szybkość, bezpieczeństwo i duża społeczność

Wykorzystując takie moduły jak oauth2, http, PyJWT możemy uzyskać zabezpieczenia aplikacji takie jak OAuth2, czy też zabezpieczenie tokenem JWT. Dodatkowo wykorzystując odpowiednie middleware'y możemy narzucić inne standardy bezpieczeństwa, należą do nich chociażby CORS (Cross Origin Resource Sharing).

 

Popularność rozwiązań open-source mierzy się za pomocą liczby osób współtworzących daną aplikację. W przypadku FastAPI jest to 284 aktywnych kontrybutorów, a także 50 tysięcy osób aktywnie śledzących zmiany w frameworku. Dla porównania niegdyś najbardziej popularny Django posiada społeczność 61 tysięcy osób aktywnie śledzących zmiany, a także 2156 osób aktywnie kontrybuujących do zmian we frameworku.

FastApi Ranking frameworkow backendowych

Dodatkowo w niezależnych testach przeprowadzanych przez https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=composite&l=dbf0n3-7b&a=2&f=zik0zj-qmx0qn-zhwum7-zik0zi-z8kflr-yyku7z-zik0zj-zijunz-zik0zj-zik0zj-zik0zj-1kv uzyskuje jedno z najwyższych miejsc wśród framework'ów wokół których oparty jest rozbudowany ekosystem rozwiązań. Są szybsze rozwiązania, ale na pewno nie z taką społecznością programistów i dostępnych pluginów i wtyczek. Warto wspomnieć, że autor FastAPI, Samuel Colvin jest dostępny na Twitterze i nietrudno się z nim skontaktować w razie poważnych problemów związanych z narzędziem.

 

Middleware i zarządzanie stanem aplikacji

FastAPI umożliwia łatwe dodawanie middleware, czyli warstw pośrednich przetwarzających żądania i odpowiedzi. Można je wykorzystać do logowania, obsługi CORS, kompresji odpowiedzi czy zarządzania sesjami. Dodatkowo FastAPI pozwala na przechowywanie i zarządzanie stanem aplikacji poprzez obiekt app.state, który umożliwia np. przechowywanie połączeń do bazy danych lub innych zasobów współdzielonych między żądaniami. Dzięki temu aplikacja może być bardziej wydajna i dobrze zorganizowana.

 

Obsługa żądań i odpowiedzi

FastAPI oferuje intuicyjną i wydajną obsługę żądań HTTP oraz generowanie odpowiedzi. Dzięki wbudowanej walidacji danych, wykorzystującej system typowania Pythona, można w łatwy sposób zapewnić poprawność przesyłanych informacji. Aplikacja automatycznie sprawdza poprawność typów zmiennych i zwraca szczegółowe komunikaty błędów, co ułatwia debugowanie oraz poprawia bezpieczeństwo API.

FastAPI obsługuje różne formaty danych w żądaniach i odpowiedziach, takie jak JSON, XML czy dane formularzy. Można również korzystać z nagłówków HTTP, ciasteczek i parametrów zapytań do dostosowywania działania aplikacji. Ponadto, FastAPI wspiera asynchroniczne przetwarzanie żądań, co pozwala na obsługę dużej liczby zapytań bez blokowania zasobów serwera.

Ważnym elementem zarządzania odpowiedziami jest możliwość dostosowywania kodów statusu HTTP oraz zwracania niestandardowych komunikatów. FastAPI pozwala także na definiowanie niestandardowych formatów odpowiedzi, co ułatwia integrację z innymi systemami i zapewnia lepsze doświadczenie użytkownika API.

 

Dependency Injection w FastAPI

Dependency Injection (wstrzykiwanie zależności) to jedna z kluczowych funkcji FastAPI, pozwalająca na efektywne zarządzanie komponentami aplikacji. Mechanizm ten umożliwia definiowanie zależności, które mogą być automatycznie wstrzykiwane do widoków API, co znacząco ułatwia organizację kodu i poprawia jego czytelność.

Dzięki Dependency Injection można np. przekazywać połączenie do bazy danych, konfigurację aplikacji, obiekty sesji użytkownika czy usługi zewnętrzne w sposób deklaratywny. FastAPI samodzielnie zarządza cyklem życia zależności, co pozwala uniknąć problemów związanych z ręcznym zarządzaniem zasobami.

Mechanizm ten jest szczególnie przydatny w dużych projektach, gdzie poszczególne części aplikacji muszą współpracować ze sobą bez silnego powiązania. Wykorzystując Dependency Injection, można łatwo testować poszczególne moduły, mockować zależności oraz zwiększyć elastyczność aplikacji.

SPRAWDŹ SWOJĄ WIEDZE Z TEMATU fastapi

Pytanie

 1/5

Jakie są cechy frameworka FastAPI?

Dlaczego warto używać FastAPI zamiast innych frameworków do tworzenia API?

Jak można zdefiniować trasy API w FastAPI?

Jakie funkcjonalności FastAPI oferuje w zakresie obsługi błędów?

Jakie funkcjonalności FastAPI oferuje w zakresie bezpieczeństwa?

Obsługa baz danych

FastAPI wspiera integrację z różnymi bazami danych, zarówno relacyjnymi, jak i nierelacyjnymi. Można korzystać z popularnych narzędzi, takich jak SQLAlchemy, Tortoise ORM czy odmiany NoSQL, np. MongoDB. Dzięki asynchronicznej obsłudze operacji bazodanowych, FastAPI pozwala na efektywne zarządzanie połączeniami i wykonywanie zapytań bez blokowania głównego wątku aplikacji.

Jednym z kluczowych aspektów pracy z bazami danych w FastAPI jest zarządzanie sesjami połączeń. Aby zapewnić bezpieczeństwo i wydajność, aplikacja może korzystać z puli połączeń oraz mechanizmów transakcyjnych. Dobrą praktyką jest także stosowanie zależności do przekazywania sesji bazodanowej do endpointów API, co pozwala na lepszą organizację kodu i uniknięcie wycieków zasobów.

FastAPI pozwala również na łatwe serializowanie obiektów bazodanowych do formatu JSON, dzięki czemu można w prosty sposób zwracać dane użytkownikom API. Możliwość walidacji i konwersji danych poprzez Pydantic ułatwia pracę z danymi wejściowymi i minimalizuje ryzyko błędów. Wsparcie dla migracji baz danych, np. za pomocą narzędzia Alembic, pozwala na efektywne zarządzanie schematem bazy w trakcie rozwoju aplikacji.

Nasza oferta

Web development

Dowiedz się więcej

Mobile development

Dowiedz się więcej

E-commerce

Dowiedz się więcej

Projektowanie UX/UI

Dowiedz się więcej

Outsourcing

Dowiedz się więcej

SEO

Dowiedz się więcej

Powiązane artykuły

Tokenizer – klucz do przetwarzania języka naturalnego. Jak działa i dlaczego jest tak ważny?

5 mar 2025

W świecie przetwarzania języka naturalnego (NLP) tokenizacja odgrywa kluczową rolę, umożliwiając komputerom rozumienie i analizę tekstu. Bez niej modele AI, wyszukiwarki czy tłumaczenia maszynowe nie byłyby w stanie efektywnie działać. Tokenizer to narzędzie, które dzieli tekst na mniejsze jednostki – słowa, znaki lub podjednostki, dzięki czemu staje się on bardziej zrozumiały dla algorytmów.

Tomasz Kozon

#ai

related-article-image-osoba używająca komputera, Tokenizer

DVC: Jak zarządzać danymi w projektach uczenia maszynowego dzięki Data Version Control

7 sty 2025

W dzisiejszych czasach, gdzie nauka o danych gwałtownie rozwija się i generuje coraz to więcej informacji, kluczowe jest efektywne zarządzanie nimi. DVC, czyli Data Version Control, to narzędzie, które pozwoli Ci na skuteczną kontrolę wersji danych w projektach związanych z uczeniem maszynowym. W tym artykule poznasz podstawy DVC, dowiesz się jak je dobrze wykorzystać i jak to narzędzie może przyspieszyć Twoją pracę.

Tomasz Kozon

#ai

Modular Monolith: Wprowadzenie do nowoczesnej architektury monolitycznej

20 gru 2024

Czy możemy połączyć zalety monolitu i mikroserwisów? Wyjaśniamy koncepcję Modularnego Monolitu, nowoczesnego podejścia do projektowania aplikacji monolitycznych. Te praktyki pomagają zorganizować kod w łatwy do zrozumienia, skalowalny i łatwy do utrzymania sposób. Dowiedz się, jak zastosować tę koncepcję w swoim projekcie.

Tomasz Kozon

#back-end

Algorytmy mrówkowe: Niewidzialna siła stojąca za nowoczesnymi rozwiązaniami technologicznymi

17 lut 2024

Algorytmy mrówkowe, zwane też metodami mrówkowymi, są niezwykle fascynującym elementem sztucznej inteligencji. Wymyślone na podstawie obserwacji naturalnego świata, te potężne narzędzia programistyczne wykorzystywane są we współczesnych rozwiązaniach technologicznych, choć często przeocza się ich rolę. Ta niewidzialna siła jest u podstaw wielu innowacji IT, tworząc m.in. efektywne sieci dostaw oraz optymalizując różnorodne procesy biznesowe.

Tomasz Kozon

#ai

Tworzenie inteligentnych chatbotów przy użyciu ChatGPT API

19 sty 2024

W dobie technologicznej rewolucji, inteligentne chatboty zyskują na znaczeniu wśród firm pragnących automatyzować swoją obsługę klienta. Narzędziem, które zrewolucjonizowało tę dziedzinę jest ChatGPT API. W tym artykule przeprowadzę Cię przez proces wdrożenia tego potężnego narzędzia.

Tomasz Kozon

#ai

Czym jest Pydantic?

30 cze 2022

Pydantic to biblioteka dla języka Python, która pozwala na szybkie i łatwe tworzenie modeli danych z walidacją danych. Pydantic jest oparty na popularnej bibliotece Python - dataclasses i pozwala na definiowanie modeli danych jako klasy Python,

Tomasz Kozon

#back-end

Motion UX: Kluczowe znaczenie dynamiki w projektowaniu interfejsów użytkownika

13 cze 2025

W coraz bardziej zaawansowanym świecie cyfrowym, dynamika staje się nieodzownym elementem projektowania interfejsów użytkownika. Motion UX bierze tę koncepcję krok dalej, ułatwiając płynność ruchu i interakcji. Kluczowe znaczenie tej techniki polega na poprawie doświadczeń użytkowników, dzięki czemu interfejsy są bardziej intuicyjne i angażujące.

Tomasz Kozon

#web-design

Zobacz wszystkie artykuły

Boring Owl Logo

Napisz do nas

Zadzwoń

+48 509 280 539

Oferta

  • Web Development

  • Mobile Development

  • UI/UX Design

  • E-commerce

  • Outsourcing

  • SEO

Menu

  • O nas

  • Case studies

  • FAQ

  • Blog

  • Kariera

  • Kontakt

Software House

  • Software House Warszawa

  • Software House Katowice

  • Software House Lublin

  • Software House Kraków

  • Software House Wrocław

  • Software House Łódź

 

  • Software House Poznań

  • Software House Gdańsk

  • Software House Białystok

  • Software House Gliwice

  • Software House Trójmiasto

Agencje SEO

  • Agencja SEO Warszawa

  • Agencja SEO Kraków

  • Agencja SEO Wrocław

  • Agencja SEO Poznań

  • Agencja SEO Gdańsk

  • Agencja SEO Toruń

© 2025 – Boring Owl – Software House Warszawa

adobexd logo

adobexd

algolia logo

algolia

amazon-s3 logo

amazon-s3

android logo

android

angular logo

angular

api logo

api

apscheduler logo

apscheduler

argocd logo

argocd

astro logo

astro

aws-amplify logo

aws-amplify

aws-cloudfront logo

aws-cloudfront

aws-lambda logo

aws-lambda

axios logo

axios

azure logo

azure

bash logo

bash

bootstrap logo

bootstrap

bulma logo

bulma

cakephp logo

cakephp

celery logo

celery

chartjs logo

chartjs

clojure logo

clojure

cloudflare logo

cloudflare

cloudinary logo

cloudinary

cms logo

cms

cobol logo

cobol

contentful logo

contentful

coolify logo

coolify

cpython logo

cpython

css3 logo

css3

django logo

django

django-rest logo

django-rest

docker logo

docker

drupal logo

drupal

dynamodb logo

dynamodb

elasticsearch logo

elasticsearch

electron logo

electron

expo-io logo

expo-io

express-js logo

express-js

fakerjs logo

fakerjs

fastapi logo

fastapi

fastify logo

fastify

figma logo

figma

firebase logo

firebase

flask logo

flask

flutter logo

flutter

gatsbyjs logo

gatsbyjs

ghost-cms logo

ghost-cms

google-cloud logo

google-cloud

graphcms logo

graphcms

graphql logo

graphql

groovy logo

groovy

gtm logo

gtm

gulpjs logo

gulpjs

hasura logo

hasura

headless-cms logo

headless-cms

heroku logo

heroku

html5 logo

html5

httpie logo

httpie

i18next logo

i18next

immutablejs logo

immutablejs

imoje logo

imoje

ios logo

ios

java logo

java

javascript logo

javascript

jekyll logo

jekyll

jekyll-admin logo

jekyll-admin

jenkins logo

jenkins

jquery logo

jquery

json logo

json

keras logo

keras

keystone5 logo

keystone5

kotlin logo

kotlin

kubernetes logo

kubernetes

laravel logo

laravel

lodash logo

lodash

magento logo

magento

mailchimp logo

mailchimp

material-ui logo

material-ui

matlab logo

matlab

maven logo

maven

miro logo

miro

mockup logo

mockup

momentjs logo

momentjs

mongodb logo

mongodb

mysql logo

mysql

nestjs logo

nestjs

net logo

net

netlify logo

netlify

next-js logo

next-js

nodejs logo

nodejs

npm logo

npm

nuxtjs logo

nuxtjs

oracle logo

oracle

pandas logo

pandas

php logo

php

postgresql logo

postgresql

postman logo

postman

prestashop logo

prestashop

prettier logo

prettier

prisma logo

prisma

prismic logo

prismic

prose logo

prose

pwa logo

pwa

python logo

python

python-scheduler logo

python-scheduler

rabbitmq logo

rabbitmq

react-flow logo

react-flow

react-hook-form logo

react-hook-form

react-js logo

react-js

react-native logo

react-native

react-query logo

react-query

react-static logo

react-static

redis logo

redis

redux logo

redux

redux-persist logo

redux-persist

redux-saga logo

redux-saga

redux-thunk logo

redux-thunk

relume logo

relume

restful logo

restful

ruby-on-rails logo

ruby-on-rails

rust logo

rust

rxjs logo

rxjs

saleor logo

saleor

sanity logo

sanity

scala logo

scala

scikit-learn logo

scikit-learn

scrapy logo

scrapy

scrum logo

scrum

selenium logo

selenium

sentry logo

sentry

shodan logo

shodan

shopify logo

shopify

slack logo

slack

sms-api logo

sms-api

socket-io logo

socket-io

solidity logo

solidity

spring logo

spring

sql logo

sql

sql-alchemy logo

sql-alchemy

storyblok logo

storyblok

storybook logo

storybook

strapi logo

strapi

stripe logo

stripe

structured-data logo

structured-data

struts logo

struts

styled-components logo

styled-components

supabase logo

supabase

svelte logo

svelte

swagger logo

swagger

swift logo

swift

symfony logo

symfony

tailwind-css logo

tailwind-css

tensorflow logo

tensorflow

terraform logo

terraform

threejs logo

threejs

twig logo

twig

typescript logo

typescript

vercel logo

vercel

vue-js logo

vue-js

webflow logo

webflow

webpack logo

webpack

websocket logo

websocket

woocommerce logo

woocommerce

wordpress logo

wordpress

yarn logo

yarn

yii logo

yii

zend logo

zend

zeplin logo

zeplin

zustand logo

zustand

Zobacz więcej