Interactieve API-documentatie en verkenning van webgebruikersinterfaces. Aangezien dit framework is gebaseerd op OpenAPI, zijn er meerdere documentatie opties mogelijk, waarvan er standaard 2 zijn inbegrepen.
Swagger UI, met interactieve interface, maakt het mogelijk je API rechtstreeks vanuit de browser aan te roepen en te testen.
Het is allemaal gebaseerd op standaard Python type declaraties (dankzij Pydantic). Je hoeft dus geen nieuwe syntax te leren. Het is gewoon standaard moderne Python.
Als je een opfriscursus van 2 minuten nodig hebt over het gebruik van Python types (zelfs als je FastAPI niet gebruikt), bekijk dan deze korte tutorial: Python Types.
Je schrijft gewoon standaard Python met types:
fromdatetimeimportdatefrompydanticimportBaseModel# Declareer een variabele als een str# en krijg editorondersteuning in de functiedefmain(user_id:str):returnuser_id# Een Pydantic modelclassUser(BaseModel):id:intname:strjoined:date
Geef de sleutels (keys) en waarden (values) van de second_user_data dict direct door als sleutel-waarden argumenten, gelijk aan: User(id=4, name=“Mary”, joined=“2018-11-30”)
Het gehele framework is ontworpen om eenvoudig en intuïtief te zijn in gebruik. Alle beslissingen zijn getest op meerdere code-editors nog voordat het daadwerkelijke ontwikkelen begon, om zo de beste ontwikkelervaring te garanderen.
Je krijgt autocomletion die je voorheen misschien zelfs voor onmogelijk had gehouden. Zoals bijvoorbeeld de price key in een JSON body (die genest had kunnen zijn) die afkomstig is van een request.
Je hoeft niet langer de verkeerde keys in te typen, op en neer te gaan tussen de documentatie, of heen en weer te scrollen om te checken of je username of toch user_name had gebruikt.
Dit framework heeft voor alles verstandige standaardinstellingen, met overal optionele configuraties. Alle parameters kunnen worden verfijnd zodat het past bij wat je nodig hebt, om zo de API te kunnen definiëren die jij nodig hebt.
Beveiliging en authenticatie is geïntegreerd. Zonder compromissen te doen naar databases of datamodellen.
Alle beveiligingsschema's gedefinieerd in OpenAPI, inclusief:
HTTP Basic.
OAuth2 (ook met JWT tokens). Bekijk de tutorial over OAuth2 with JWT.
API keys in:
Headers.
Query parameters.
Cookies, enz.
Plus alle beveiligingsfuncties van Starlette (inclusief sessiecookies).
Gebouwd als een herbruikbare tool met componenten die makkelijk te integreren zijn in en met je systemen, datastores, relationele en NoSQL databases, enz.
Of anders gezegd, je hebt ze niet nodig, importeer en gebruik de code die je nodig hebt.
Elke integratie is ontworpen om eenvoudig te gebruiken (met afhankelijkheden), zodat je een “plug-in" kunt maken in 2 regels code, met dezelfde structuur en syntax die wordt gebruikt voor je padbewerkingen.
FastAPI is volledig verenigbaar met (en gebaseerd op) Pydantic. Dus alle extra Pydantic code die je nog hebt werkt ook.
Inclusief externe pakketten die ook gebaseerd zijn op Pydantic, zoals ORMs, ODMs voor databases.
Dit betekent ook dat je in veel gevallen het object dat je van een request krijgt direct naar je database kunt sturen, omdat alles automatisch wordt gevalideerd.
Hetzelfde geldt ook andersom, in veel gevallen kun je dus het object dat je krijgt van de database direct doorgeven aan de client.
Met FastAPI krijg je alle functionaliteit van Pydantic (omdat FastAPI is gebaseerd op Pydantic voor alle dataverwerking):
Geen brainfucks:
Je hoeft geen nieuwe microtaal voor schemadefinities te leren.
Als je bekend bent Python types, weet je hoe je Pydantic moet gebruiken.
Werkt goed samen met je IDE/linter/hersenen:
Doordat pydantic's datastructuren enkel instanties zijn van klassen, die je definieert, werkt automatische aanvulling, linting, mypy en je intuïtie allemaal goed met je gevalideerde data.
Valideer complexe structuren:
Gebruik van hiërarchische Pydantic modellen, Python typing's List en Dict, enz.
Met validators kunnen complexe dataschema's duidelijk en eenvoudig worden gedefinieerd, gecontroleerd en gedocumenteerd als JSON Schema.
Je kunt diep geneste JSON objecten laten valideren en annoteren.
Uitbreidbaar:
Met Pydantic kunnen op maat gemaakte datatypen worden gedefinieerd of je kunt validatie uitbreiden met methoden op een model dat is ingericht met de decorator validator.