AI-agenten · Les

REST API-basis voor agentontwikkelaars

HTTP-methoden, statuscodes, headers en de JSON-indeling van requests en responses.

Les 1 van 413 stappen

REST API-basis voor agentontwikkelaars is een gratis AI-agenten-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject AI-agenten. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus AI-agenten bevat in totaal 4 lessen.

Wat is een HTTP-verzoek?

Elke agent die verbinding maakt met een externe service gebruikt HTTP — de taal van het web. Een HTTP-verzoek heeft drie belangrijke onderdelen: een methode, een URL en optionele headers en een body.

Zie de methode als een werkwoord dat de server vertelt wat je wilt doen, en de URL als het adres van de resource.

import requests

# A simple GET request to a public API
response = requests.get('https://api.example.com/users')
print(response.status_code)  # 200
print(response.text)          # raw JSON string

GET — Gegevens ophalen

GET haalt gegevens op van een server. De methode mag nooit iets wijzigen. Agents gebruiken GET om gebruikersprofielen te lezen, takenlijsten op te halen of configuratiegegevens binnen te halen.

Je kunt parameters in de URL meegeven als querystring met het argument params.

import requests

# Fetch users filtered by role
params = {'role': 'admin', 'page': 1, 'limit': 10}
response = requests.get(
    'https://api.example.com/users',
    params=params
)
# URL becomes: /users?role=admin&page=1&limit=10
data = response.json()
print(data['users'])

POST — Resources aanmaken

POST stuurt gegevens naar de server om een nieuwe resource aan te maken. Agents gebruiken POST om taken in te dienen, berichten te versturen of acties te activeren. De gegevens staan als JSON in de body van de aanvraag.

Stel altijd de header Content-Type: application/json in — de meeste API's vereisen dit.

import requests
import json

payload = {
    'title': 'Research competitors',
    'assignee': 'agent-001',
    'priority': 'high'
}

response = requests.post(
    'https://api.example.com/tasks',
    json=payload  # sets Content-Type automatically
)
print(response.status_code)  # 201 Created
new_task = response.json()
print('Created task ID:', new_task['id'])

PUT en PATCH — Gegevens bijwerken

PUT vervangt een volledige resource door nieuwe gegevens. PATCH werkt alleen specifieke velden bij. Agents gebruiken PUT wanneer ze het volledige bijgewerkte object hebben, en PATCH voor gedeeltelijke wijzigingen, zoals het bijwerken van de status van een taak.

import requests

task_id = '42'

# PATCH: only update the status field
response = requests.patch(
    f'https://api.example.com/tasks/{task_id}',
    json={'status': 'completed'}
)
print(response.status_code)  # 200

# PUT: replace the whole task object
full_task = {
    'title': 'Research competitors',
    'assignee': 'agent-001',
    'priority': 'low',
    'status': 'completed'
}
response = requests.put(
    f'https://api.example.com/tasks/{task_id}',
    json=full_task
)
print(response.status_code)  # 200

DELETE — Resources verwijderen

DELETE verwijdert een resource van de server. Agents gebruiken DELETE om tijdelijke gegevens op te schonen, verwerkte taken te verwijderen of geplande opdrachten te annuleren. De meeste DELETE-aanvragen hebben geen body.

Een geslaagde DELETE-aanvraag retourneert doorgaans 204 No Content — de respons bevat geen body.

import requests

task_id = '42'

response = requests.delete(
    f'https://api.example.com/tasks/{task_id}'
)

if response.status_code == 204:
    print('Task deleted successfully')
elif response.status_code == 404:
    print('Task not found — already deleted?')
else:
    print('Unexpected status:', response.status_code)

Statuscodes: succes met 2xx

Statuscodes vertellen je agent of een aanvraag is geslaagd of mislukt. Het 2xx-bereik betekent succes:

  • 200 OK — GET/PUT/PATCH heeft gegevens teruggegeven
  • 201 Created — POST heeft een nieuwe resource aangemaakt
  • 204 No Content — DELETE is geslaagd, er is geen body teruggegeven

Controleer altijd de statuscode voordat je de body van de respons verwerkt.

import requests

response = requests.post(
    'https://api.example.com/tasks',
    json={'title': 'New task'}
)

if response.status_code == 201:
    task = response.json()
    print('Created:', task['id'])
elif response.status_code == 200:
    print('Updated existing resource')
else:
    print('Unexpected code:', response.status_code)

Statuscodes: clientfouten met 4xx

4xx-fouten betekenen dat je agent een ongeldige aanvraag heeft verstuurd. Veelvoorkomende fouten:

  • 400 Bad Request — ongeldige JSON of een vereist veld ontbreekt
  • 401 Unauthorized — API-sleutel ontbreekt of is ongeldig
  • 404 Not Found — resource bestaat niet
  • 429 Too Many Requests — limiet voor aanvragen overschreden

Je agent moet de aanvraag herstellen en niet blind opnieuw proberen.

import requests

response = requests.get(
    'https://api.example.com/tasks/9999',
    headers={'Authorization': 'Bearer YOUR_KEY'}
)

if response.status_code == 401:
    print('AUTH ERROR: Check your API key')
elif response.status_code == 404:
    print('Task not found')
elif response.status_code == 429:
    retry_after = response.headers.get('Retry-After', 60)
    print(f'Rate limited. Wait {retry_after}s')
elif response.status_code == 400:
    print('Bad request:', response.json().get('error'))

Statuscodes: serverfouten met 5xx

5xx-fouten betekenen dat er iets mis is gegaan aan de kant van de server — je agent heeft niets verkeerd gedaan. Veelvoorkomende fouten:

  • 500 Internal Server Error — fout of crash op de server
  • 502 Bad Gateway — fout bij de upstream-service
  • 503 Service Unavailable — server overbelast of offline

Je kunt deze na een korte wachttijd veilig opnieuw proberen.

import requests
import time

def get_with_retry(url, headers, max_retries=3):
    for attempt in range(max_retries):
        response = requests.get(url, headers=headers)
        if response.status_code < 500:
            return response  # success or client error
        wait = 2 ** attempt
        print(f'Server error {response.status_code}, retrying in {wait}s...')
        time.sleep(wait)
    return response  # return last response after retries

Headers van aanvragen

Headers bevatten metadata bij elke aanvraag. De belangrijkste voor agents zijn:

  • Content-Type: application/json — vertelt de server dat je body JSON is
  • Authorization: Bearer TOKEN — authenticeert je aanvraag
  • Accept: application/json — vertelt de server dat je JSON terug verwacht
  • User-Agent — identificeert je client (sommige API's vereisen dit)
import requests

headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer sk-proj-abc123xyz',
    'Accept': 'application/json',
    'User-Agent': 'MyAgent/1.0'
}

response = requests.post(
    'https://api.example.com/analyze',
    headers=headers,
    json={'text': 'Analyze this document'}
)

print(response.json())

JSON-body van aanvraag en antwoord

De meeste moderne API's wisselen gegevens uit als JSON. Gebruik bij het verzenden json=payload in requests; dit serialiseert de gegevens en stelt de headers automatisch in. Roep bij het ontvangen response.json() aan om de body naar een Python-dict te parseren.

Controleer altijd of de verwachte sleutels bestaan voordat je ze benadert.

import requests

# Send JSON body
response = requests.post(
    'https://api.example.com/summarize',
    json={
        'content': 'Long article text here...',
        'max_length': 150,
        'format': 'bullet_points'
    }
)

# Parse JSON response
result = response.json()

# Always check keys exist
summary = result.get('summary', 'No summary returned')
tokens_used = result.get('usage', {}).get('total_tokens', 0)

print('Summary:', summary)
print('Tokens used:', tokens_used)

Alles samenvoegen

Een goed geschreven agent verpakt API-aanroepen met methodeselectie, de juiste headers, controle van statuscodes en JSON-parsering in een nette hulpfunctie. Zo verloopt elke interactie met een API op dezelfde manier en kun je fouten eenvoudig opsporen.

Gebruik een Session-object om verbindingen te hergebruiken en headers met meerdere aanvragen te delen.

import requests

class APIClient:
    def __init__(self, base_url, api_key):
        self.base_url = base_url
        self.session = requests.Session()
        self.session.headers.update({
            'Authorization': f'Bearer {api_key}',
            'Content-Type': 'application/json',
            'Accept': 'application/json'
        })

    def get(self, path, params=None):
        r = self.session.get(f'{self.base_url}{path}', params=params)
        r.raise_for_status()
        return r.json()

    def post(self, path, payload):
        r = self.session.post(f'{self.base_url}{path}', json=payload)
        r.raise_for_status()
        return r.json()

# Usage
client = APIClient('https://api.example.com', 'sk-proj-abc123')
tasks = client.get('/tasks', params={'status': 'open'})
new_task = client.post('/tasks', {'title': 'Write report'})

Korte toets: HTTP-methoden

Toets je begrip van HTTP-methoden en statuscodes.

Samenvatting van de HTTP-basis

Je kent nu de HTTP-basis waarop elke agent steunt:

  • GET haalt op, POST maakt aan, PUT/PATCH werkt bij en DELETE verwijdert
  • 2xx = succes, 4xx = fout van je agent, 5xx = fout van de server
  • Headers bevatten authenticatie (Authorization: Bearer) en de indeling (Content-Type: application/json)
  • Gebruik response.json() om de body te parseren en .get() om veilig velden te benaderen
  • Een Session-object deelt headers en verbindingen over meerdere aanvragen

Met deze basis op orde kun je je agent vol vertrouwen met elke REST API verbinden.

Gratis beginnen

Leer AI-agenten met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
60
Lessen
239

Veelgestelde vragen

Is de les “REST API-basis voor agentontwikkelaars” gratis?

Ja — de volledige tekst van “REST API-basis voor agentontwikkelaars” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus AI-agenten wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus AI-agenten bevat in totaal 4 lessen.

Wat leer ik in “REST API-basis voor agentontwikkelaars”?

HTTP-methoden, statuscodes, headers en de JSON-indeling van requests en responses. Je oefent met AI-agenten door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met AI-agenten te beginnen?

Ervaring vooraf is niet nodig. AI-agenten op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “REST API-basis voor agentontwikkelaars”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over AI-agenten?

Ja. Elke les over AI-agenten bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. REST API-basis voor agentontwikkelaars
  2. Authenticatie: API-keys en OAuth
  3. API-responses en fouten afhandelen
  4. Rate limiting en retry-logica
← Terug naar AI-agenten