Ga naar hoofdinhoud

FastAPI-tutorial: een introductie tot het gebruik van FastAPI

Verken het FastAPI-framework en ontdek hoe je het kunt gebruiken om API’s in Python te maken
Bijgewerkt 1 jun 2026  · 13 min lezen

API’s (Application Programming Interfaces) zijn de ruggengraat van moderne architectuur omdat ze applicaties modulair en losjes gekoppeld maken. Hierdoor kun je applicaties snel en eenvoudig bouwen, wat het onderhoud en updaten gemakkelijk maakt. 

API’s zijn ook heel belangrijk in machine learning omdat ze verschillende applicaties in staat stellen om data te delen en samen te werken, wat tijd en moeite bespaart. Er zijn veel verschillende frameworks voor het bouwen van API’s in Python. Enkele van de populairste frameworks voor het maken van API’s in Python zijn Django, Flask en FastAPI. Deze tutorial is een deep dive in een van die frameworks: FastAPI.

Als je dieper in dit onderwerp wilt duiken, raad ik deze cursus aan: Deploying AI Into Production With FastAPI.

Wat is een API?

API staat voor Application Programming Interface. Een API is een software-tussenlaag die twee applicaties met elkaar laat communiceren. Wanneer je een app op je telefoon gebruikt, maakt de app verbinding met internet en stuurt data naar een server. De server verwerkt vervolgens de data en stuurt die terug naar je telefoon. De app op je telefoon interpreteert de data en presenteert die op een leesbare manier aan jou. 

Een API is als een ober in een restaurant. De ober neemt je bestelling op en brengt die naar de keuken. De keuken bereidt het eten en geeft het terug aan de ober. De ober brengt het eten vervolgens naar je tafel. 

Op dezelfde manier neemt een API een verzoek van een applicatie aan en stuurt dat naar een server. De server verwerkt het verzoek en stuurt de data terug naar de applicatie. De applicatie interpreteert de data en presenteert die aan de gebruiker.

Een eenvoudig API-architectuurontwerp

Beeldbron: https://www.techfunnel.com/wp-content/uploads/2021/07/api.png

Als je meer wilt leren over machine learning-pijplijnen, API’s en MLOps, bekijk dan onze Machine Learning, Pipelines, Deployment and MLOps Tutorial.

Wat is FastAPI

FastAPI is een high-performance webframework voor het bouwen van API’s met Python 3.7+, gebaseerd op standaard Python type hints. Het helpt ontwikkelaars om snel en efficiënt applicaties te bouwen. FastAPI is gebouwd bovenop de Starlette-webserver en bevat functies die het bouwen van webapplicaties eenvoudiger maken, zoals automatische datavalidatie, foutafhandeling en interactieve API-documentatie. 

We bekijken al deze features afzonderlijk in deze sectie. Laten we eerst de belangrijkste kenmerken bekijken zoals genoemd in de originele documentatie van FastAPI.

  • Performance: Vergelijkbaar met NodeJS en de programmeertaal Go.
  • Snelheid: Verhoogt de ontwikkelsnelheid 2-3x.
  • Eenvoudig: Uitstekende editorondersteuning. Overal autocompletion. Makkelijk te leren en te gebruiken.
  • Robuust: Productierijpe code met automatische interactieve documentatie.
  • Gebaseerd op OpenAPI: Volledig compatibel met OpenAPI en JSON Schema.

FastAPI installeren

FastAPI vereist Python 3.7+. Je kunt het installeren met pip. Je moet FastAPI en de ASGI-server `uvicorn` installeren.

``

# install fastapi

pip install fastapi




# install uvicorn
pip install uvicorn

``

Maak een eenvoudige API

Laten we meteen beginnen met het maken van een heel simpele toy-API. Ik gebruik VS Code om dit te implementeren, maar je kunt elke editor gebruiken die je fijn vindt.

```

from typing import Union

from fastapi import FastAPI




app = FastAPI()




@app.get("")

def read_root():

    return {"Hello": "World"}




@app.get("/items/{item_id}")

def read_item(item_id: int, q: Union[str, None] = None):

    return {"item_id": item_id, "q": q}

```

(Voorbeeld gereproduceerd uit de originele documentatie). Dank aan @tiangolo.

Voer deze API nu uit via een commandoregelterminal met het volgende commando:

```

uvicorn main:app –reload

```

`main` is de naam van het Python-bestand, en `app` is de variabele die de FastAPI-klasse bewaart. Je kunt ze noemen zoals je wilt. Zodra je het bovenstaande commando uitvoert, zie je iets als dit in je terminal:

Commandoterminal

Ga in je browser naar de link, en als je een pagina ziet met `Hello World,` dan draait de API.

API draait op localhost in browser

Afbeelding door de auteur

Gefeliciteerd met het bouwen van je eerste API. 

Interactieve API-docs

FastAPI genereert een "schema" met al je API’s via de OpenAPI-standaard voor het definiëren van API’s. Een "schema" is een definitie of beschrijving van iets. Niet de code die het implementeert, maar een abstracte beschrijving. Het OpenAPI-schema voedt de twee interactieve documentatiesystemen die in FastAPI zijn inbegrepen.

Om de documentatie te zien, voeg je gewoon `/docs` toe aan de URL (`http://127.0.0.1:8000/docs`). Deze link toont automatische interactieve API-documentatie.

Automatische documentatie gemaakt door FastAPI

Afbeelding door de auteur

Klik op de knop `Try it out` rechtsboven om de API te testen.

Automatische documentatie gemaakt door FastAPI 2

Afbeelding door de auteur

Je ziet dat de response body een dictionary is. Dit is de return-call van de functie `read_item` gedefinieerd in `main.py`. Je ziet ook de request-URL `http://127.0.0.1:8000/items/1?q=orange`. `1` en `orange` waren onze inputs voor de API.

Er is een alternatief voor de interactieve automatische documentatie in FastAPI. Ga hiervoor naar http://127.0.0.1:8000/redoc`. Zo ziet dat eruit:

Automatische documentatie gemaakt door FastAPI 3

Afbeelding door de auteur

Meer geavanceerde voorbeelden

Bij het bouwen van een API definieert het "pad" de route of endpoint van het verzoek. Er is hier echter nog een keuze, namelijk de “operatie”. Het woord `operation` verwijst hier naar een van de HTTP-"methoden". Door een (of meer) van deze zogenaamde "methoden" te gebruiken, kun je communiceren met elk van de verschillende paden die door het HTTP-protocol worden ondersteund. Meestal gebruik je:

  • POST: om data te creëren.
  • GET: om data te lezen.
  • PUT: om data te updaten.
  • DELETE: om data te verwijderen.
  • En nog een paar geavanceerde 

FastAPI ondersteunt al deze HTTP-methoden. 

Dat FastAPI is gebouwd op Python type hints is nog een belangrijk aspect van dit framework. Type hints worden ondersteund in Python 3.6 en later. Type hints zijn een speciale soort syntax waarmee je het type van een variabele kunt declareren. 

Het declareren van types voor je variabelen stelt editors en andere tools in staat je beter te helpen. Laten we een geavanceerd voorbeeld bekijken.

We wijzigen ons `main.py`-bestand om een nieuw `PUT`-verzoek toe te voegen dat meerdere inputs van verschillende datatypes accepteert. 

```

from typing import Union




from fastapi import FastAPI

from pydantic import BaseModel




app = FastAPI()




class Item(BaseModel):

    name: str

    price: float

    is_offer: Union[bool, None] = None




@app.get("")

def read_root():

    return {"Hello": "World"}




@app.get("/items/{item_id}")

def read_item(item_id: int, q: Union[str, None] = None):

    return {"item_id": item_id, "q": q}




@app.put("/items/{item_id}")

def update_item(item_id: int, item: Item):

    return {"item_name": item.name, "item_id": item_id}

```

(Voorbeeld gereproduceerd uit de originele documentatie). Dank aan @tiangolo.

De wijziging:

Er is een `put`-verzoek toegevoegd dat twee inputs neemt. `item_id` is een integer en het type `item` verwijst naar de custom class `Item` die is gemaakt en `BaseModel` van `pydantic` erft. De klasse `Item` bevat drie attributen: `name`, `price`, `is_offer`, en ze hebben elk een ander datatype.

FastAPI controleert: 

  • `name` is een `str`.
  • `price` is een `float`.
  • `is_offer` is een bool, indien aanwezig.

Het voordeel van het gebruik van type hints is dat je één keer de types van parameters, body, enz. declareert als functieparameters met standaard Python (3.6+). Je krijgt:

  • Editorondersteuning, inclusief autocompletion en typechecks
  • Datavalidatie
  • Conversie van invoergegevens
  • Conversie van uitvoergegevens
  • Fouten die makkelijk te begrijpen zijn.

Vergelijking van FastAPI met Django en Flask

Alle drie deze frameworks zijn Python-webframeworks die je kunt gebruiken om webapplicaties te ontwikkelen. Ze hebben elk hun eigen sterke en zwakke punten.

Django is een full-featured framework dat alles bevat wat je nodig hebt om te starten, waaronder een ingebouwde ORM en een adminpaneel. Het kan wat overweldigend zijn voor beginners, maar de uitgebreide documentatie maakt het makkelijk te leren.

Flask is een microframework dat lichtgewicht is en makkelijk om mee te beginnen. Het bevat niet zoveel features als Django, maar is perfect voor eenvoudige projecten.

FastAPI is een nieuw framework dat is ontworpen om snel en gebruiksvriendelijk te zijn. Het bevat functies zoals automatische datavalidatie en documentatie. 

 

Django

Flask

FastAPI

Community

Groot. 

66K GitHub-sterren

Groot. 

61K GitHub-sterren

Groot. 

50K GitHub-sterren

Performance

Django is omvangrijk. Het is niet het beste qua performance.

Flask is een micro webframework. Het presteert beter dan Django.

FastAPI is een van de snelste webframeworks met native async-ondersteuning, wat de efficiëntie van het framework vergroot. 

Async-ondersteuning

Ja, met beperkte latency.

Nee. 

Heeft Asyncio nodig

FastAPI biedt native async-ondersteuning.

Gebruiksgemak

Django is omvangrijk en daarom wat complex om te leren.

Flask is makkelijk te leren en vrij rechttoe rechtaan in gebruik.

FastAPI is de simpelste van de drie.

Interactieve documentatie

Niet interactief

Nee

Ja (OpenAI, Redoc)

Dataverificatie

Nee

Nee

Ja


Prestatiebenchmarks van FastAPI

Volgens de resultaten van tests uitgevoerd door techempower is FastAPI superieur aan alle andere frameworks qua algehele performance. 

API-prestatiebenchmarks

Bron: https://www.techempower.com/benchmarks/

Voorbeeld: een end-to-end machine learning-pijplijn bouwen met PyCaret en deployen met FastAPI 

In deze sectie bouwen we snel een machine learning-pijplijn en maken daarna een API om het model te serveren. We gebruiken de low-code Python-bibliotheek PyCaret om een pijplijn te bouwen en een API te maken. PyCaret heeft integratie met FastAPI, waardoor het extreem eenvoudig wordt om machine learning-modellen als een API te maken en te serveren.

PyCaret

PyCaret is een open-source, low-code machine learning-bibliotheek in Python die ML-workflows automatiseert. Het is een end-to-end tool voor machine learning en modelbeheer die de experimenteercyclus exponentieel versnelt en je productiever maakt.

```

pip install pycaret

```




```

import pycaret

pycaret.__version__

>>> 2.3.10

```

We gebruiken de dataset `insurance` in dit voorbeeld. Het is een regressiecasus voor het voorspellen van medische kosten op basis van leeftijd, geslacht, BMI en regio. 

```

from pycaret.datasets import get_data

data = get_data(‘insurance’)

```

Voorbeeld van dataset

Afbeelding door de auteur

Vervolgens initialiseren we de functie `setup` van pycaret. Deze functie initialiseert het experiment in PyCaret en maakt de transformatiepijplijn op basis van alle parameters die aan de functie zijn doorgegeven. 

De `setup` moet eerst worden uitgevoerd voordat je andere functies gebruikt. Er zijn twee parameters nodig: `data` en `target`. Alle overige argumenten in `setup` zijn optioneel. De `setup`-functie is verantwoordelijk voor het aansturen van het volledige datapreprocessing-proces. Bekijk de PyCaret-documentatie voor een volledig overzicht van alle preprocessing-procedures die in PyCaret worden ondersteund.

```

from pycaret.regression import *

s = setup(data, target = 'charges')

```

Output van de setup-functie van PyCaret

Afbeelding door de auteur Output ingekort.

Zodra de setup klaar is, kunnen we met één regel code starten met modeltraining en -selectie: `compare_models`. Met cross-validatie traint en evalueert deze functie de modelprestaties van alle estimators binnen de modellibrary. Het resultaat is een scoretabel met de gemiddelde scores verkregen uit cross-validatie.

Preprocessing voor machine learning in Python

Wil je meer leren over hoe je je opgeschoonde data klaarstoomt voor modelleren? Volg dan onze cursus Preprocessing voor Machine Learning in Python.

Ga nu aan de slag
```

best = compare_models()

```

Output van de compare_models-functie van PyCaret

Afbeelding door de auteur

Hieruit blijkt dat het best presterende model de `Gradient Boosting Regressor` is. Als we willen, kunnen we het model analyseren via visualisaties en proberen de performance verder te verbeteren via hyperparametertuning of modelensembling, maar dat doen we niet in deze tutorial. 

We gaan direct aan de slag met het bouwen van de API van het beste model om voorspellingen in productie te serveren met FastAPI. Onthoud: PyCaret heeft integratie met FastAPI, dus het kan automatisch een REST-API maken van het model met de functie `create_api`.

```

create_api (best, 'insurance_prediction_model')

```

API succesvol gemaakt

Om deze API uit te voeren, open je nu de opdrachtprompt en navigeer je naar de map waar je Notebook staat en voer je het volgende commando uit: `python insurance_prediction_model.py`. 

Command line

Ga naar `http://127.0.0.1:8000/docs` en je ziet dezelfde UI als eerder in deze tutorial

API op http:::127.0.0.1:8000:docs

Afbeelding door de auteur

API op http:::127.0.0.18000:docs

Afbeelding door de auteur

Je kunt ook de alternatieve interactieve documentatie bekijken via `http://127.0.0.1:8000/redoc

API op http:::127.0.0.1:8000:docs3

Afbeelding door de auteur

Onthoud dat zowel de standaard- als de redoc-interactieve documentatie wordt aangedreven door OpenAPI-standaarden. 

Als je het bestand wilt zien dat PyCaret heeft gemaakt toen je de functie `create_api` gebruikte, kun je dat bekijken in dezelfde map als je Notebook. Het ziet er zo uit:

```

import pandas as pd

from pycaret.regression import load_model, predict_model

from fastapi import FastAPI

import uvicorn




# Create the app

app = FastAPI()




# Load trained Pipeline

model = load_model('my_lr_api')




# Define predict function

@app.post('/predict')

def predict(age, sex, bmi, children, smoker, region):

    data = pd.DataFrame([[age, sex, bmi, children, smoker, region]])

    data.columns = ['age', 'sex', 'bmi', 'children', 'smoker', 'region']

    predictions = predict_model(model, data=data) 

    return {'prediction': list(predictions['Label'])}




if __name__ == '__main__':

    uvicorn.run(app, host='127.0.0.1', port=8000)




```

Conclusie

Dit artikel besprak het idee van API’s en waarom ze worden gebruikt. API’s zijn belangrijk in moderne architectuur omdat ze verschillende softwareprogramma’s in staat stellen om data en functionaliteit te delen. Hierdoor kun je complexe systemen bouwen die betrouwbaarder zijn en gemakkelijker te onderhouden.

Daarna doken we dieper in een relatief nieuw framework in Python genaamd FastAPI. FastAPI is een nieuwer API-framework dat is ontworpen om gebruiksvriendelijk en efficiënt te zijn. Het is een uitstekende optie voor ontwikkelaars die snel en eenvoudig een API willen maken.

GitHub-sterhistorie - gemaakt met star-history.com

GitHub-sterhistorie - gemaakt met star-history.com

Wil je ook leren hoe je in Python met Flask een eenvoudige API maakt van een machine learning-model? Bekijk dan deze makkelijk te volgen Turning Machine Learning Models into APIs in Python-tutorial.

FastAPI FAQ’s

Is FastAPI asynchroon?

FastAPI ondersteunt asynchrone code out-of-the-box met de async/await Python-sleutelwoorden.

Is FastAPI klaar voor productie?

FastAPI is volledig productierijp, met uitstekende documentatie, ondersteuning en een gebruiksvriendelijke interface.

Waarin verschilt FastAPI van Flask?

FastAPI ondersteunt asynchrone aanroepen. Het is lichter, sneller en makkelijker te leren dan Flask. Zowel Flask als FastAPI hebben grote communities.

Heeft FastAPI ook een ingebouwde developmentserver?

Nee, FastAPI heeft geen ingebouwde developmentserver. Daarvoor moet je `uvicorn` gebruiken.

Wordt FastAPI ondersteund op Python 2?

Nee, FastAPI is alleen beschikbaar in Python 3.6+.

Is FastAPI alleen beschikbaar in Python?

Ja

Is FastAPI sneller dan de programmeertaal Go?

Nee. Volgens techempower is Golang Fiber de 50e snelste API ter wereld. FastAPI staat op plek 183.

Is FastAPI compatibel met Pydantic?

FastAPI is volledig compatibel met (en gebaseerd op) Pydantic.

Onderwerpen

Leer AI met deze cursussen!

Cursus

Efficiënt AI-modellen trainen met PyTorch

4 Hr
1.5K
Leer hoe je trainingstijden voor large language models verkort met Accelerator en Trainer voor gedistribueerde training
Bekijk detailsRight Arrow
Begin met de cursus
Meer zienRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer zienMeer zien