0Pricing
AI Agents · Leçon

Fondamentaux des API REST pour les développeurs d’agents

Méthodes HTTP, codes d’état, en-têtes et format des requêtes et réponses JSON.

Fondamentaux des API REST pour les développeurs d’agents est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.

Qu'est-ce qu'une requête HTTP ?

Tout agent qui se connecte à un service externe utilise HTTP — le langage du Web. Une requête HTTP comporte trois éléments essentiels : une méthode, une URL, ainsi que des en-têtes et un corps facultatifs.

Considérez la méthode comme un verbe indiquant au serveur ce que vous souhaitez faire, et l'URL comme l'adresse de la ressource.

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 — Récupérer des données

GET récupère des données depuis un serveur. Il ne doit jamais rien modifier. Les agents utilisent GET pour lire des profils utilisateur, récupérer des listes de tâches ou obtenir des données de configuration.

Vous pouvez transmettre des paramètres dans l'URL sous forme de chaîne de requête à l'aide de l'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 — Créer des ressources

POST envoie des données au serveur pour créer une ressource. Les agents utilisent POST pour envoyer des tâches, transmettre des messages ou déclencher des actions. Les données sont placées dans le corps de la requête au format JSON.

Définissez toujours l'en-tête Content-Type: application/json — la plupart des API l'exigent.

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 et PATCH — Mettre à jour des données

PUT remplace une ressource entière par de nouvelles données. PATCH ne met à jour que certains champs. Les agents utilisent PUT lorsqu'ils disposent de l'objet complet mis à jour, et PATCH pour les modifications partielles, comme la mise à jour de l'état d'une tâche.

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 — Supprimer des ressources

DELETE supprime une ressource du serveur. Les agents utilisent DELETE pour nettoyer des données temporaires, supprimer des tâches traitées ou annuler des tâches planifiées. La plupart des requêtes DELETE n'ont pas de corps.

Une opération delete réussie renvoie généralement 204 No Content — la réponse ne contient aucun corps.

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)

Codes d'état : réussite 2xx

Les codes d'état indiquent à votre agent si une requête a réussi ou échoué. La plage 2xx indique une réussite :

  • 200 OK — GET/PUT/PATCH a renvoyé des données
  • 201 Created — POST a créé une nouvelle ressource
  • 204 No Content — DELETE a réussi, aucun corps n'a été renvoyé

Vérifiez toujours le code d'état avant de traiter le corps de la réponse.

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)

Codes d'état : erreurs client 4xx

Les erreurs 4xx signifient que votre agent a envoyé une requête incorrecte. Les plus courantes sont :

  • 400 Bad Request — JSON invalide ou champ obligatoire manquant
  • 401 Unauthorized — clé API absente ou invalide
  • 404 Not Found — la ressource n'existe pas
  • 429 Too Many Requests — la limite de débit est dépassée

Votre agent doit corriger la requête au lieu de réessayer aveuglément.

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'))

Codes d'état : erreurs serveur 5xx

Les erreurs 5xx signifient qu'un problème s'est produit du côté du serveur — votre agent n'a rien fait de mal. Les plus courantes sont :

  • 500 Internal Server Error — bogue ou plantage du serveur
  • 502 Bad Gateway — défaillance du service en amont
  • 503 Service Unavailable — serveur surchargé ou hors service

Vous pouvez réessayer ces requêtes sans risque après une courte attente.

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

En-têtes de requête

Les en-têtes transportent des métadonnées avec chaque requête. Les plus importants pour les agents sont :

  • Content-Type: application/json — indique au serveur que votre corps est au format JSON
  • Authorization: Bearer TOKEN — authentifie votre requête
  • Accept: application/json — indique au serveur que vous attendez du JSON en retour
  • User-Agent — identifie votre client (certaines API l'exigent)
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())

Corps JSON de la requête et de la réponse

La plupart des API modernes échangent des données au format JSON. Pour envoyer des données, utilisez json=payload dans les requêtes (la sérialisation et la définition des en-têtes sont alors automatiques). À la réception, appelez response.json() pour analyser le corps et obtenir un dictionnaire Python.

Vérifiez toujours que les clés attendues existent avant d'y accéder.

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)

Tout assembler

Un agent bien conçu regroupe les appels d'API dans une fonction utilitaire claire qui sélectionne la méthode, définit les bons en-têtes, vérifie le code d'état et analyse le JSON. Chaque interaction avec l'API devient ainsi cohérente et facile à déboguer.

Utilisez un objet Session pour réutiliser les connexions et partager les en-têtes entre plusieurs requêtes.

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'})

Vérification rapide : méthodes HTTP

Vérifiez votre compréhension des méthodes HTTP et des codes d'état.

Récapitulatif des fondamentaux HTTP

Vous connaissez maintenant les bases HTTP sur lesquelles repose tout agent :

  • GET récupère, POST crée, PUT/PATCH met à jour, DELETE supprime
  • 2xx = réussite, 4xx = erreur de votre agent, 5xx = erreur du serveur
  • Les en-têtes transportent l'authentification (Authorization: Bearer) et le format (Content-Type: application/json)
  • Utilisez response.json() pour analyser le corps et .get() pour accéder aux champs en toute sécurité
  • Un objet Session partage les en-têtes et les connexions entre les requêtes

Une fois ces bases maîtrisées, vous pouvez connecter votre agent à n'importe quelle API REST en toute confiance.

Questions Fréquemment Posées

La leçon « Fondamentaux des API REST pour les développeurs d’agents » est-elle gratuite ?

Oui — le texte complet de « Fondamentaux des API REST pour les développeurs d’agents » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Fondamentaux des API REST pour les développeurs d’agents » ?

Méthodes HTTP, codes d’état, en-têtes et format des requêtes et réponses JSON. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer AI Agents ?

Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Fondamentaux des API REST pour les développeurs d’agents » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?

Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Fondamentaux des API REST pour les développeurs d’agents
  2. Authentification : clés API et OAuth
  3. Gérer les réponses et les erreurs d’API
  4. Limitation du débit et logique de nouvelle tentative
← Retour à AI Agents