REST API-basis voor agentontwikkelaars
HTTP-methoden, statuscodes, headers en de JSON-indeling van requests en responses.
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 stringGET — 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) # 200DELETE — 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 teruggegeven201 Created— POST heeft een nieuwe resource aangemaakt204 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 ontbreekt401 Unauthorized— API-sleutel ontbreekt of is ongeldig404 Not Found— resource bestaat niet429 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 server502 Bad Gateway— fout bij de upstream-service503 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 retriesHeaders van aanvragen
Headers bevatten metadata bij elke aanvraag. De belangrijkste voor agents zijn:
Content-Type: application/json— vertelt de server dat je body JSON isAuthorization: Bearer TOKEN— authenticeert je aanvraagAccept: application/json— vertelt de server dat je JSON terug verwachtUser-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.
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
- REST API-basis voor agentontwikkelaars
- Authenticatie: API-keys en OAuth
- API-responses en fouten afhandelen
- Rate limiting en retry-logica