Interaktywna dokumentacja i webowe interfejsy do eksploracji API. Z racji tego, że framework bazuje na OpenAPI, istnieje wiele opcji, z czego 2 są domyślnie dołączone.
Swagger UI, z interaktywnym interfejsem - odpytuj i testuj swoje API bezpośrednio z przeglądarki.
Wszystko opiera się na standardowych deklaracjach typu Python 3.6 (dzięki Pydantic). Brak nowej składni do uczenia. Po prostu standardowy, współczesny Python.
Jeśli potrzebujesz szybkiego przypomnienia jak używać deklaracji typów w Pythonie (nawet jeśli nie używasz FastAPI), sprawdź krótki samouczek: Python Types.
Wystarczy, że napiszesz standardowe deklaracje typów Pythona:
fromdatetimeimportdatefrompydanticimportBaseModel# Zadeklaruj parametr jako str# i uzyskaj wsparcie edytora wewnątrz funkcjidefmain(user_id:str):returnuser_id# Model PydanticclassUser(BaseModel):id:intname:strjoined:date
A one będą mogły zostać później użyte w następujący sposób:
Przekaż klucze i wartości słownika second_user_data bezpośrednio jako argumenty klucz-wartość, co jest równoznaczne z: User(id=4, name="Mary", joined="2018-11-30")
Cały framework został zaprojektowany tak, aby był łatwy i intuicyjny w użyciu. Wszystkie pomysły zostały przetestowane na wielu edytorach jeszcze przed rozpoczęciem procesu tworzenia, aby zapewnić najlepsze wrażenia programistyczne.
Otrzymasz uzupełnienie nawet w miejscach, w których normalnie uzupełnienia nie ma. Na przykład klucz "price" w treści JSON (który mógł być zagnieżdżony), który pochodzi z zapytania.
Koniec z wpisywaniem błędnych nazw kluczy, przechodzeniem tam i z powrotem w dokumentacji lub przewijaniem w górę i w dół, aby sprawdzić, czy w końcu użyłeś nazwy username czy user_name.
Wszystko posiada sensowne domyślne wartości. Wszędzie znajdziesz opcjonalne konfiguracje. Wszystkie parametry możesz dostroić, aby zrobić to co potrzebujesz do zdefiniowania API.
Bezpieczeństwo i uwierzytelnianie jest zintegrowane. Bez żadnych kompromisów z bazami czy modelami danych.
Wszystkie schematy bezpieczeństwa zdefiniowane w OpenAPI, w tym:
Podstawowy protokół HTTP.
OAuth2 (również z tokenami JWT). Sprawdź samouczek OAuth2 with JWT.
Klucze API w:
Nagłówkach.
Parametrach zapytań.
Ciasteczkach, itp.
Plus wszystkie funkcje bezpieczeństwa Starlette (włączając w to ciasteczka sesyjne).
Wszystko zbudowane jako narzędzia i komponenty wielokrotnego użytku, które można łatwo zintegrować z systemami, magazynami oraz bazami danych - relacyjnymi, NoSQL, itp.
Lub ujmując to inaczej - brak potrzeby wtyczek. Importuj i używaj kod, który potrzebujesz.
Każda integracja została zaprojektowana tak, aby była tak prosta w użyciu (z zależnościami), że możesz utworzyć "wtyczkę" dla swojej aplikacji w 2 liniach kodu, używając tej samej struktury i składni, które są używane w operacjach na ścieżce.
FastAPI jest w pełni kompatybilny z (oraz bazuje na) Pydantic. Tak więc każdy dodatkowy kod Pydantic, który posiadasz, również będzie działał.
Wliczając w to zewnętrzne biblioteki, również oparte o Pydantic, takie jak ORM, ODM dla baz danych.
Oznacza to, że w wielu przypadkach możesz przekazać ten sam obiekt, który otrzymasz z żądania bezpośrednio do bazy danych, ponieważ wszystko jest walidowane automatycznie.
Działa to również w drugą stronę, w wielu przypadkach możesz po prostu przekazać obiekt otrzymany z bazy danych bezpośrednio do klienta.
Dzięki FastAPI otrzymujesz wszystkie funkcje Pydantic (ponieważ FastAPI bazuje na Pydantic do obsługi wszystkich danych):
Bez prania mózgu:
Brak nowego mikrojęzyka do definiowania schematu, którego trzeba się nauczyć.
Jeśli znasz adnotacje typów Pythona to wiesz jak używać Pydantic.
Dobrze współpracuje z Twoim IDE/linterem/mózgiem:
Ponieważ struktury danych Pydantic to po prostu instancje klas, które definiujesz; autouzupełnianie, linting, mypy i twoja intuicja powinny działać poprawnie z Twoimi zwalidowanymi danymi.
Szybkość:
w benchmarkach Pydantic jest szybszy niż wszystkie inne testowane biblioteki.
Walidacja złożonych struktur:
Wykorzystanie hierarchicznych modeli Pydantic, Pythonowego modułu typing zawierającego List, Dict, itp.
Walidatory umożliwiają jasne i łatwe definiowanie, sprawdzanie złożonych struktur danych oraz dokumentowanie ich jako JSON Schema.
Możesz mieć głęboko zagnieżdżone obiekty JSON i wszystkie je poddać walidacji i adnotować.
Rozszerzalność:
Pydantic umożliwia zdefiniowanie niestandardowych typów danych lub rozszerzenie walidacji o metody na modelu, na których użyty jest dekorator walidatora.