Questions et réponses d'entretien sur l'API REST (Guide 2026)
Apprenez à maîtriser les concepts de l'API REST, des principes fondamentaux aux modèles avancés, grâce à plus de 50 questions d'entretien, des exemples de code pratiques et des tableaux de référence rapide.
Les API REST sont à la base de la plupart des intégrations sur Internet. Que vous postuliez pour un poste dans le domaine du backend, du full stack ou de l'ingénierie logicielle, vous serez probablement confronté à des questions sur la conception d'API REST, les méthodes HTTP et les modèles d'authentification.
Dans ce guide, je vais vous présenter les questions que les recruteurs posent réellement. Je les ai classées par niveau de difficulté et par type de poste, afin que vous puissiez vous concentrer sur ce qui importe le plus pour le poste que vous visez. Chaque réponse comprend des exemples pratiques et, le cas échéant, des extraits de code que vous pouvez adapter.
Il est important de garder à l'esprit que les examinateurs évaluent les connaissances fondamentales bien plus souvent que les sujets avancés. Si vous maîtrisez les bases (méthodes HTTP, codes d'état, absence d'état), vous serez en mesure de répondre avec assurance à la plupart des questions relatives aux API REST lors d'un entretien. Les motifs architecturaux sophistiqués apparaissent plus tard.
Questions d'entretien sur les API REST de base
Ces questions évaluent vos connaissances fondamentales. Attendez-vous à ce qu'elles soient abordées dans presque tous les entretiens, quel que soit le niveau hiérarchique.
1. Qu'est-ce que REST et quelles sont ses contraintes ?
REST signifie « Representational State Transfer » (transfert d'état représentatif). Il s'agit d'un style architectural pour la conception d'applications en réseau, défini par Roy Fielding dans sa thèse de doctorat en 2000.
REST comporte six contraintes :
Client-serveur : Séparation des préoccupations entre l'interface utilisateur et le stockage des données
s sur les apatrides: Chaque demande contient toutes les informations nécessaires à son traitement.
Mémorisable : Les réponses doivent indiquer si elles peuvent être mises en cache.
s du système multicouche: Les composants ne peuvent pas voir au-delà de leur couche immédiate.
Interface uniforme : Méthode standardisée pour interagir avec les ressources
Code sur demande (facultatif) : Les serveurs peuvent transmettre du code exécutable aux clients.
2. Quelle est la différence entre REST et SOAP ?
REST est un style architectural ; SOAP est un protocole. REST utilise généralement JSON sur HTTP et exploite les méthodes HTTP standard. SOAP utilise exclusivement le langage XML et définit son propre format de messagerie avec des enveloppes et des adresses.
Aspect
REPOS
SOAP
Format
JSON, XML, autres
XML uniquement
Transport
HTTP
HTTP, SMTP, autres
Mise en cache
Mise en cache HTTP native
Non mémorisable
Performance
Léger
Frais généraux plus élevés
SOAP restepertinent pour les systèmes d'entreprise nécessitant des contrats formels (WSDL) ou une sécurité au niveau des messages (WS-Security).
3. Que sont les méthodes HTTP et dans quels cas les utilise-t-on ?
Les méthodes HTTP définissent l'action à effectuer sur une ressource.
Méthode
Objectif
Exemple
GET
Récupérer une ressource
GET /users/123
POST
Veuillez créer une nouvelle ressource.
POST /users
PUT
Remplacer entièrement une ressource
PUT /users/123
PATCH
Mettre à jour partiellement une ressource
PATCH /users/123
DELETE
Supprimer une ressource
DELETE /users/123
4. Quelle est la différence entre PUT et POST ?
POST crée une nouvelle ressource dont l'URI est déterminée par le serveur. PUT remplace une ressource à une URI spécifique indiquée par le client.
POST /users → Server creates user, returns /users/123
PUT /users/123 → Client specifies URI, replaces entire resourcePropulsé par
Si vous effectuez une opération PUT sur une URI qui n'existe pas, le serveur peut la créer. Si vous effectuez une opération PUT sur une URI existante, vous remplacez l'intégralité de la ressource.
5. Quelle est la différence entre PUT et PATCH ?
PUT remplace l'intégralité de la ressource. PATCH applique des modifications partielles.
# PUT replaces everything
PUT /users/123{"name":"Khalid","email":"[email protected]","role":"admin"}# PATCH updates only specified fields
PATCH /users/123{"role":"admin"}Propulsé par
6. Que signifie « sans état » dans REST ?
« Stateless » signifie que chaque requête doit contenir toutes les informations dont le serveur a besoin pour la traiter. Le serveur ne stocke aucun contexte client entre les requêtes.
Cela signifie qu'il n'y a pas de sessions côté serveur. Si un utilisateur est authentifié, le client doit envoyer des informations d'identification (généralement un jeton) avec chaque requête.
7. Qu'est-ce qui caractérise une API RESTful ?
Une API est véritablement RESTful lorsqu'elle satisfait à toutes les contraintes REST, y compris HATEOAS (Hypermedia as the Engine of Application State). Dans la pratique, la plupart des API qui se qualifient de « REST » sont en réalité « de type REST » ou correspondent au niveau 2 du modèle de maturité de Richardson. Et honnêtement, cela convient parfaitement à la plupart des cas d'utilisation.
Niveaux du modèle de maturité de Richardson pour les API REST. Image fournie par l'auteur.
8. Quels sont les codes d'état HTTP de base qu'il est important de connaître ?
Il est important de connaître au moins ces sept codes d'état essentiels qui couvrent la majorité des scénarios API :
Code
Nom
Quand utiliser
200
OK
GET, PUT, PATCH réussis
201
Créé
POST réussi (inclure l'en-tête Location)
204
Aucun contenu
Suppression réussie
400
Demande incorrecte
Syntaxe incorrecte
404
Non trouvé
La ressource n'existe pas
500
Erreur interne du serveur
Défaillance côté serveur
9. Quelle est la différence entre une ressource et un point de terminaison ?
Une ressource est une entité de données (utilisateur, commande, produit). Un point de terminaison est le chemin d'accès URL qui permet d'accéder à cette ressource.
Resource: User
Endpoints: GET /users, GET /users/123, POST /usersPropulsé par
10. Quelles sont les meilleures pratiques en matière de conception d'URI ?
Veuillez utiliser des noms, et non des verbes. Veuillez utiliser des minuscules et des tirets pour les noms composés de plusieurs mots dans les URI. Veuillez utiliser des noms pluriels pour les collections.
Good: /users, /users/123, /order-items
Bad: /getUsers, /Users, /order_itemsPropulsé par
Veuillez éviter les imbrications profondes. Au lieu de /users/123/posts/456/comments/789, veuillez envisager /comments/789 ou /comments?post_id=456.
11. Qu'est-ce que l'idempotence et quelles méthodes HTTP sont idempotentes ?
Une opération est idempotente si l'effectuer plusieurs fois produitle même résultat que de l'effectuer une seule fois.
Méthode
Idempotent
Pourquoi
GET
Oui
La lecture ne modifie pas l'état
PUT
Oui
Le remplacement par les mêmes données donne le même résultat.
DELETE
Oui
Supprimer deux fois entraîne la suppression définitive de la ressource.
POST
Non
Créer deux fois génère deux ressources.
PATCH
Non
Cela dépend de l'opération.
Un PATCH qui définit une valeur estidempotent ; un PATCH qui incrémente un compteur ne l'est pas.
12. Quelle est la différence entre les méthodes sûres et les méthodes idempotentes ?
Les méthodes sécurisées ne modifient pas les ressources (GET, HEAD, OPTIONS). Les méthodes idempotentes peuvent être appelées plusieurs fois avec le même effet (GET, PUT, DELETE).
Toutes les méthodes sécurisées sont idempotentes, mais toutes les méthodes idempotentes ne sont pas sécurisées. DELETE est idempotent mais n'est pas sécurisé car il modifie l'état.
13. Quand est-il préférable d'utiliser des paramètres de requête plutôt que des paramètres de chemin ?
Les paramètres de chemin identifient une ressource spécifique. Les paramètres de requête permettent de filtrer, trier ou paginer les collections.
Path: /users/123 (specific user)
Query: /users?status=active (filtered collection)
/users?sort=name&limit=10Propulsé par
14. Qu'est-ce que la négociation de contenu ?
La négociation de contenu permet aux clients de demander différentes représentations d'une ressource. Le client envoie un en-tête « Accept » et le serveur répond avec le format approprié.
Accept: application/json → Server returns JSON
Accept: application/xml → Server returns XMLPropulsé par
15. Quel est l'objectif de la méthode OPTIONS ?
OPTIONS renvoie les méthodes HTTP prises en charge par un serveur pour une URL spécifique. Les navigateurs l'utilisent pour les requêtes CORS pré-vol afin de vérifier si les requêtes inter-origines sont autorisées.
Questions d'entretien intermédiaires sur l'API REST
Ces questions évaluent l'application pratique et la prise de décision. Veuillez les envisager pour des postes de niveau intermédiaire.
16. Quelle est la différence entre 401 et 403 ?
Il s'agit des deux codes d'état les plus fréquemment confondus. J'ai observé des ingénieurs expérimentés confondre ces concepts lors de revues de code.
401 Non autorisé
Signifie non authentifié. Le serveur ne reconnaît pas votre identité. Votre réponse devrait inviter l'utilisateur à se connecter.
403 Accès refusé
Signifie non autorisé. Le serveur reconnaît votre identité, mais vous ne disposez pas des autorisations nécessaires. Une nouvelle authentification ne sera pas utile.
Organigramme illustrant la distinction entre l'authentification et l'autorisation. Image fournie par l'auteur.
17. Quelle est la différence entre 400 et 422 ?
Voici quelques exemples illustrant la différence :
400 Demande incorrecte
Cela indique une syntaxe incorrecte. Le serveur n'est pas en mesure d'analyser la requête (structure JSON non valide, en-têtes obligatoires manquants).
422 Entité non traitée
Cela indique une syntaxe valide mais des erreurs sémantiques. Le JSON est valide, mais les données ne passent pas la validation (format d'adresse e-mail non valide, mot de passe trop court).
21. Qu'est-ce qu'un ETag et comment fonctionne la mise en cache ?
Un ETag est un identifiant de version pour une ressource. Le serveur l'envoie dans ses réponses ; le client le renvoie dans les requêtes suivantes afin de vérifier si la ressource a changé.
# First request
GET /users/123
Response: ETag: "abc123"
# Subsequent request
GET /users/123
If-None-Match: "abc123"
Response: 304 Not Modified (if unchanged)Propulsé par
22. Quelles méthodes d'authentification sont utilisées pour les API REST ?
Les quatre méthodes d'authentification les plus courantes sont les clés API, les jetons porteurs, OAuth 2.0 et JWT :
Méthode
Cas d'utilisation
Avantages
Inconvénients
Clés API
De serveur à serveur
Simple
Sans date d'expiration, susceptible de fuir
Jetons au porteur
Authentification de session
Apatride
Il est impératif de garantir un stockage sécurisé.
OAuth 2.0
Accès par des tiers
Autorisation déléguée
Mise en œuvre complexe
JWT
Authentification sans état
Autonome
Il n'est pas possible de révoquer sans liste noire.
23. Qu'est-ce que le JWT et comment fonctionne-t-il ?
Le JWT (JSON Web Token) se compose de trois parties : En-tête, charge utile et signature. Veuillez vous renseigner sur l'utilisation de JSON dans Python.
Le serveur signe le jeton ; les clients l'envoient avec leurs requêtes. Le serveur valide la signature sans effectuer de recherche dans la base de données.
24. Quelle est la différence entre RS256 et HS256 ?
HS256 (symétrique) : Même secret signe et vérifie. Risque si plusieurs services doivent vérifier les jetons.
RS256 (asymétrique) : La clé privée signe, la clé publique vérifie. Recommandé pour les systèmes distribués où plusieurs services valident les jetons.
25. Qu'est-ce que HATEOAS ?
HATEOAS (Hypermedia as the Engine of Application State) signifie que les réponses incluent des liens vers des actions et des ressources connexes.
{"id":123,"name":"Khalid","links":[{"rel":"self","href":"/users/123"},{"rel":"orders","href":"/users/123/orders"}]}Propulsé par
Dans la pratique, la plupart des API n'implémentent pas HATEOAS dans son intégralité. Comprenez le concept, mais ne vous attendez pas à le mettre en œuvre dans la plupart des emplois. Même les grandes entreprises technologiques développent rarement des API entièrement conformes à HATEOAS.
26. Comment gérez-vous les erreurs de manière cohérente ?
Veuillez utiliser le format RFC 7807 Problem Details pour des réponses d'erreur cohérentes :
{"type":"https://api.example.com/errors/validation","title":"Validation Error","status":422,"detail":"Email format is invalid","instance":"/users"}Propulsé par
27. Qu'est-ce que la limitation de débit et pourquoi est-elle importante ?
La limitation du débit protège votre API contre les abus et garantit une utilisation équitable. Réponse courante :
HTTP/1.1 429 Too Many Requests
Retry-After: 3600
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0Propulsé par
28. Comment concevez-vous le filtrage et le tri ?
Veuillez utiliser des paramètres de requête avec des conventions claires :
# Filtering
GET /products?category=electronics&price[gte]=100&price[lte]=500
# Sorting (prefix - for descending)
GET /users?sort=-created_at,namePropulsé par
Questions d'entretien avancées sur l'API REST
Ces questions évaluent la réflexion architecturale. Veuillez les envisager pour des postes de haut niveau.
29. Quels sont les changements entre OAuth 2.0 et OAuth 2.1 ?
OAuth 2.1 consolide les meilleures pratiques en matière de sécurité :
Caractéristique
OAuth 2.0
OAuth 2.1
PKCE
Optional
Obligatoire pour tous les clients
Subvention implicite
Prise en charge
Supprimé
Octroi de mot de passe
Prise en charge
Supprimé
URI de redirection
Correspondance flexible
Correspondance exacte requise
Point essentiel à retenir : veuillez utiliser le flux de code d'autorisation avec PKCE pour tous les types de clients.
30. Comment mettez-vous en œuvre l'idempotence pour les points de terminaison de paiement ?
Veuillez utiliser des clés idempotentes pour sécuriser les requêtes POST en cas de nouvelles tentatives :
asyncdefhandle_payment(request: Request, payment: PaymentCreate):
idempotency_key = request.headers.get("Idempotency-Key")# Check if already processed
cached =await redis.get(f"idem:{idempotency_key}")if cached:return JSONResponse(json.loads(cached))# Process payment
result =await process_payment(payment)# Cache result (24-hour TTL)await redis.setex(f"idem:{idempotency_key}",86400, json.dumps(result))return resultPropulsé par
Le client génère un UUID et l'envoie avec la requête. Si la même clé est à nouveau reçue, renvoyez la réponse mise en cache.
31. Comment concevriez-vous un limiteur de débit distribué ?
Pour les systèmes distribués, il n'est pas possible d'utiliser des compteurs en mémoire, car le trafic est réparti entre les instances. Il s'agit d'un piège courant qui pose des difficultés aux candidats.
Architecture :
Utiliser Redis pour le stockage centralisé des compteurs
Mettre en œuvre l'algorithme Token Bucket pour la tolérance aux rafales.
Utilisez des opérations atomiques (scripts Lua) pour éviter les conditions de concurrence.
# Pseudocode for Token Bucket
tokens = redis.get(user_id)or max_tokens
if tokens >0:
redis.decr(user_id)
process_request()else:return429Propulsé par
32. Dans quels cas préférez-vous utiliser gRPC plutôt que REST ?
Le choix entre gRPC et REST dépend de vos besoins spécifiques.
Optez pour gRPC dans les cas suivants :
Communication interne entre microservices (amélioration du débit de 5 à 10 fois)
Exigences en matière de streaming en temps réel
Mobile vers backend avec contraintes de bande passante
Environnements polyglottes nécessitant des contrats stricts
Veuillez choisir REST pour :
API publiques avec divers utilisateurs
Applications Web (prise en charge universelle par les navigateurs)
Opérations CRUD simples
Équipes peu familières avec les Protocol Buffers
33. Comment gérez-vous les opérations de longue durée ?
Veuillez utiliser le modèle de requête asynchrone :
Le client envoie une demande
Le serveur renvoie 202 Accepted avec une URL d'état.
Le client interroge l'URL d'état jusqu'à ce que l'opération soit terminée.
POST /reports
Response: 202 Accepted
Location: /reports/abc123/status
GET /reports/abc123/status
Response: {"status": "processing", "progress": 45}
GET /reports/abc123/status
Response: {"status": "completed", "result_url": "/reports/abc123"}Propulsé par
34. Qu'est-ce que le modèle Saga ?
Saga gère les transactions distribuées entre les microservices sans verrouillage. Chaque service exécute une transaction locale et publie un événement. Si une étape échoue, les transactions compensatoires annulent les étapes précédentes.
Order Created → Payment Processed → Inventory Reserved → Order Confirmed
↓ (failure)
Release Payment → Cancel OrderPropulsé par
35. Quelles sont les vulnérabilités de sécurité courantes liées aux JWT ?
Confusion algorithmique L'attaquant remplace RS256 par HS256 et signe avec la clé publique. Correction : veuillez toujours ajouter les algorithmes à la liste blanche.
# Vulnerable
jwt.decode(token, key)# Secure
jwt.decode(token, key, algorithms=["RS256"])Propulsé par
Questions relatives à l'API REST pour les développeurs backend
Ces questions se concentrent sur les détails de mise en œuvre côté serveur, l'optimisation des bases de données et les modèles de performance auxquels les ingénieurs backend sont confrontés quotidiennement.
36. Qu'est-ce que le problème de requête N+1 ?
Le problème N+1 survient lorsque vous récupérez N enregistrements, puis exécutez une requête distincte pour chaque relation d'enregistrement.
# N+1 Problem: 101 queries for 100 users
users = User.query.all()# 1 queryfor user in users:print(user.posts)# 100 queriesPropulsé par
Solutions :
Django : Veuillez utiliser select_related() pour les clés étrangères et prefetch_related() pour les relations plusieurs-à-plusieurs.
# 2 queries instead of 101
users = User.objects.prefetch_related('posts').all()Propulsé par
SQLAlchemy : Veuillez utiliser joinedload() ou selectinload().
37. Comment configurez-vous le regroupement de connexions ?
Le regroupement de connexions réutilise les connexions à la base de données au lieu d'en créer de nouvelles pour chaque requête.
# SQLAlchemy
engine = create_engine("postgresql://user:pass@host/db",
pool_size=5,# Permanent connections
max_overflow=10,# Temporary overflow
pool_timeout=30,# Wait timeout
pool_pre_ping=True# Validate before use)Propulsé par
38. Quelles stratégies de mise en cache connaissez-vous ?
Il existe trois stratégies principales de mise en cache, chacune étant optimisée pour différents modèles d'accès :
Stratégie
Description
Cas d'utilisation
Cache-Aside
L'application vérifie le cache, puis la base de données.
Nécessite une lecture approfondie, tolère la répétition
Écriture directe
Écrire simultanément dans le cache et la base de données
La cohérence est essentielle
Écriture différée
Écrire dans le cache, mise à jour asynchrone de la base de données
Débit d'écriture élevé
39. Comment mettez-vous en œuvre la vérification de signature webhook ?
La vérification de la signature Webhook garantit que la demande provient bien de l'expéditeur attendu. Voici une implémentation utilisant HMAC :
40. Quels indicateurs permettent d'évaluer la santé d'une API ?
Il est recommandé de surveiller ces quatre indicateurs clés pour évaluer la santé de votre API :
Système métrique
Description
Seuil d'alerte
Latence P50
Temps de réponse médian
Référence
Latence P99
Les 1 % les plus lents
2 secondes pendant 5 minutes
Taux d'erreur
Pourcentage de 4xx/5xx
1 % pendant 5 minutes
Débit
Demandes par seconde
Planification de la capacité
Questions sur l'API REST pour les développeurs Full Stack
Ces questions évaluent votre compréhension des préoccupations liées aux clients et aux serveurs, en particulier la sécurité des navigateurs, la gestion des états et la communication inter-origines.
41. À quel moment un navigateur envoie-t-il une requête CORS pré-vol ?
Les navigateurs envoient une requête OPTIONS préalable pour :
Méthodes autres que GET, HEAD, POST
En-têtes personnalisés (Autorisation, X-API-Key)
Type de contenu autre que form-urlencoded, multipart/form-data, text/plain
42. Comment configurer CORS de manière sécurisée ?
Une configuration CORS sécurisée nécessite d'ajouter explicitement les origines à la liste blanche et de gérer avec soin les informations d'identification. Voici une configuration sécurisée d'Express.js :
// Express.js
app.use(cors({origin:['https://yourdomain.com'],// Never use * with credentialscredentials:true,methods:['GET','POST','PUT','DELETE'],allowedHeaders:['Content-Type','Authorization']}));Propulsé par
Veuillez ne jamais utiliser de caractères génériques (*) avec les informations d'identification. Veuillez ne jamais autoriser l'originenull.
43. Où devriez-vous stocker les jetons sur le client ?
Le stockage des jetons implique des compromis en matière de sécurité entre les vulnérabilités XSS et CSRF.
Stockage
Risque XSS
CSRFRisk
Recommandation
stockage local
Élevé
Aucun
Veuillez éviter les jetons
Cookie HttpOnly
Faible
Nécessite une atténuation
Recommandé
En mémoire
Faible
Faible
Idéal pour les jetons d'accès
Meilleures pratiques : Veuillez stockerles jetons d'actualisationdans des cookies HttpOnly à l'aide de l'SameSite=Strict. Veuillez conserver les jetons d'accès en mémoire.
44. Quand est-il préférable d'utiliser les WebSockets plutôt que le SSE ?
Le choix dépend de la nécessité d'une communication bidirectionnelle et de la manière dont vous souhaitez gérer la reconnexion :
Caractéristique
WebSockets
SSE
Direction
Bidirectional
Du serveur au client
Reconnexion
Manuel
Automatique
Données binaires
Oui
Non
Veuillez utiliser SSE pour les notifications, les flux en direct et les cotations boursières. Veuillez utiliser les WebSockets pour le chat, les jeux multijoueurs et l'édition collaborative.
45. Comment gérez-vous les téléchargements de fichiers ?
Pour les fichiers volumineux, veuillez utiliser les téléchargements par morceaux avec suivi de la progression :
asyncfunctionchunkedUpload(file, chunkSize =5*1024*1024){const totalChunks = Math.ceil(file.size / chunkSize);for(let i =0; i < totalChunks; i++){const chunk = file.slice(i * chunkSize,(i +1)* chunkSize);awaituploadChunk(uploadId, i, chunk);}}Propulsé par
Questions sur l'API REST basées sur des scénarios
Ces questions évaluent votre capacité à appliquer les principes REST à des problèmes concrets. Les recruteurs souhaitent comprendre votre processus de conception et la manière dont vous procédez aux compromis architecturaux.
46. Concevez une API REST pour un système de réservation hôtelière.
Un système de réservation hôtelière doit être capable de gérer les recherches, les vérifications de disponibilité et les réservations tout en évitant les doubles réservations. Voici les principales ressources :
Ressources :
/hotels - Liste et recherche d'hôtels
/hotels/{id}/rooms - Chambres disponibles
/bookings - Créer et gérer les réservations
/guests/{id} - Profils des invités
Décisions importantes :
Veuillez utiliser la pagination par curseur pour la recherche d'hôtels.
Mettre en œuvre un verrouillage optimiste pour la disponibilité des salles
Renvoyer une erreur 409 en cas de tentative de double réservation.
Veuillez utiliser des clés idempotentes pour le traitement des paiements.
47. Comment mettriez-vous en œuvre les suppressions temporaires ?
Veuillez ajouter un deleted_athorodatage au lieu de supprimer des enregistrements :
@app.delete("/users/{user_id}")defdelete_user(user_id:int):
user = db.get(user_id)
user.deleted_at = datetime.utcnow()
db.commit()return Response(status_code=204)@app.get("/users")deflist_users(include_deleted:bool=False):
query = User.query
ifnot include_deleted:
query = query.filter(User.deleted_at.is_(None))return query.all()Propulsé par
48. Comment procéder à la migration de la version 1 vers la version 2 sans perturber les clients ?
Veuillez utiliser le modèle Strangler Fig :
Déployer la version 2 parallèlement à la version 1
Transférer les nouvelles fonctionnalités vers la version 2
Veuillez procéder à la migration progressive des terminaux existants.
Communiquer la dépréciation via l'en-tête Sunset
Veuillez supprimer la version 1 après la période de migration.
49. Comment concevriez-vous une API de recherche avec un filtrage complexe ?
Pour une recherche de produit avec plusieurs filtres :
GET /products?q=laptop&category=electronics&price[gte]=500&price[lte]=2000&brand=apple,dell&in_stock=true&sort=-rating&limit=20&cursor=abc123Propulsé par
Décisions relatives à la conception :
Veuillez utiliser Elasticsearch pour la recherche en texte intégral (les bases de données relationnelles rencontrent des difficultés avec la correspondance approximative).
Mettre en œuvre la recherche à facettes pour afficher les options de filtrage disponibles.
Le nombre de résultats renvoyés par chaque filtre est affiché afin que les utilisateurs puissent évaluer le nombre de résultats générés par chaque filtre.
Mémoriser les combinaisons de recherche fréquentes
50. Comment gérez-vous la gestion des versions API dans une architecture microservices ?
Options :
Gestion des versions au niveau de la passerelle: La passerelle API achemine /v1/* vers les anciens services et /v2/*vers les nouveaux.
Gestion des versions au niveau du service : Chaque service gère sa propre négociation de version.
Contrats axés sur le consommateur : Veuillez utiliser Pact ou des outils similaires pour garantir la compatibilité.
Pour la plupart des équipes, la gestion des versions au niveau de la passerelle offre la séparation la plus claire.
51. Comment mettriez-vous en œuvre la limitation du débit pour différents niveaux d'utilisateurs ?
La solution consiste à définir des limites spécifiques à chaque niveau et à les vérifier à l'aide des compteurs Redis :
Ces questions évaluent vos compétences en communication et votre capacité à gérer les défis liés aux API dans le monde réel. Concentrez-vous sur la démonstration de votre processus de résolution de problèmes et de votre manière de collaborer avec les parties prenantes.
52. Expliquer REST à une personne non initiée à la technologie
Considérez une API REST comme un serveur dans un restaurant. Il n'est pas possible pour vous (le client) d'accéder directement à la cuisine. Au lieu de cela, vous indiquez au serveur ce que vous souhaitez commander sur le menu, et il vous l'apporte. Le menu est similaire à la documentation de l'API, il répertorie les options disponibles. Le serveur suit des règles spécifiques : vous demandez quelque chose (GET), vous commandez quelque chose de nouveau (POST) ou vous renvoyez quelque chose (DELETE). Si la cuisine est à court d'un produit, le serveur vous en informe (404 Not Found) afin que vous n'attendiez pas indéfiniment.
Cette analogie s'applique remarquablement bien aux réunions avec les parties prenantes.
53. Veuillez décrire une occasion où vous avez optimisé une API.
Veuillez utiliser la méthode STAR :
Situation: Notre API de recherche affichait des temps de réponse de 3 secondes pendant les pics de trafic.
Tâche: « Il était nécessaire de réduire la latence sans apporter de modifications majeures à l'architecture. »
Action: J'ai intégré la mise en cache Redis pour les requêtes fréquentes, implémenté la pagination basée sur le curseur et ajouté des index de base de données.
Résultat: Le temps de réponse a été réduit à 200 ms et nous avons traité cinq fois plus de trafic.
54. Comment communiquez-vous les modifications importantes aux utilisateurs de l'API ?
Veuillez annoncer à l'avance: Veuillez nous informer au moins 6 à 12 mois à l'avance de tout changement important.
Fournir des guides de migration : Veuillez documenter précisément les changements et la manière de s'y adapter.
Veuillez exécuter les deux versions : Continuer à utiliser l'ancienne version pendant la transition
Surveiller l'utilisation : Veuillez identifier les clients qui utilisent encore l'ancienne version.
55. Quelle documentation établissez-vous pour les API ?
Les documents essentiels comprennent :
Spécification OpenAPI/Swagger : Contrat lisible par machine
Guide de démarrage : Premier appel API en moins de 5 minutes
Guide d'authentification : Comment obtenir et utiliser les identifiants
Référence d'erreur : Tous les codes d'erreur possibles et la manière de les traiter
Journal des modifications : Quels sont les changements apportés à chaque version ?
Documentation relative à la limite de débit : Limites par niveau et gestion des erreurs 429
56. Dans quels cas ne recommanderiez-vous pas l'utilisation de REST ?
REST n'est pas toujours le choix le plus approprié. Savoir quand utiliser des alternatives à l' témoigne d'une grande maturité architecturale. J'ai observé des équipes imposer l'utilisation de REST dans des cas où cela engendre plus de problèmes que cela n'en résout.
Veuillez utiliser cette section comme référence rapide lorsque vous avez besoin de vérifier les propriétés des méthodes HTTP, les codes d'état ou les modèles courants lors de la préparation d'un entretien ou d'un développement en situation réelle.
Comparaison des méthodes HTTP
Ce tableau résume les principales propriétés de chaque méthode HTTP,vous aidant ainsi àchoisir celle qui convient le mieux à votre cas d'utilisation.
Méthode
Sûr
Idempotent
Mémorisable
Utilisation habituelle
OBTENIR
Oui
Oui
Oui
Récupérer une ressource
PUBLIER
Non
Non
Conditional
Créer une ressource
VEUILLEZ NOTER QUE
Non
Oui
Non
Veuillez remplacer la ressource
PATCH
Non
Non
Conditional
Mise à jour partielle
SUPPRIMER
Non
Oui
Non
Supprimer la ressource
TÊTE
Oui
Oui
Oui
Obtenir uniquement les en-têtes
OPTIONS
Oui
Oui
Non
Pré-vol CORS
Référence des codes d'état
Voici les codes d'état HTTP les plus couramment utilisés, classés par catégorie. Concentrez-vous sur la compréhension de l'utilisation de chacun plutôt que sur la mémorisation de l'ensemble des spécifications.
2xx Réussite
200 OK: GET, PUT, PATCH réussis
201 Créé le : POST réussi (inclure l'en-tête Location)
204 Aucun contenu: Suppression réussie
Erreurs client 4xx
400 Demande incorrecte: Syntaxe incorrecte
401 Non autorisé: Veuillez vous identifier
403 Accès refusé: Authentifié mais non autorisé
404 Page introuvable: La ressource n'existe pas
409 Conflit: Conflit d'État
422 Entité non traitée: Erreur de validation
429 Demandes excessives: Taux limité
Erreurs 5xx du serveur
Erreur interne du serveur 500: Défaillance générale du serveur
502 Bad Gateway: Erreur du serveur en amont
503 Service indisponible: Surcharge temporaire
Erreurs courantes à éviter
Même les développeurs expérimentés peuvent se trouver confrontés à ces difficultés. Veuillez prêter attention aux pièges courants suivants lors de la conception ou de la mise en œuvre d'API REST :
Utilisation de verbes dans les URL (par exemple, /getUsers au lieu de /users)
Renvoyer 200 OK pour les états d'erreur, ce qui perturbe la gestion des erreurs côté client
Confusion entre les codes d'erreur 401 et 403 (authentification vs. Autorisation)
URL imbriquées au-delà de deux niveaux
Stockage des jetons dans localStorage (crée des vulnérabilités XSS)
Ignorer l'idempotence pour les requêtes POST
Renvoi de messages d'erreur génériques sans détails exploitables
Conclusion
Je reconnais que mémoriser des définitions ne garantit pas la réussite à tous les entretiens techniques. En réalité, l'ingénierie dans le monde réel nécessite souvent de déroger aux règles « strictes » dont nous venons de discuter, et les examinateurs s'intéressent davantage à votre raisonnement qu'à votre capacité à réciter les spécifications RFC. Pour les postes hautement spécialisés, une connaissance approfondie du domaine ou une expertise spécifique dans un cadre particulier peut encore être le facteur déterminant.
Cependant, il est important de maîtriser ces principes fondamentaux REST, même si vous ne rencontrez pas ces questions précises. Il sert de modèle pour comprendre le fonctionnement du web moderne. Lorsque vous êtes invité à concevoir un nouveau système ou à résoudre un problème de production, comprendre la différence entre un 401 et un 403 (comme expliqué précédemment) vous permet de résoudre les problèmes plus rapidement. Vous comprendrez parfaitement pourquoi la standardisation de vos interactions API, et non pas seulement l'écriture de code fonctionnel, est la marque distinctive d'un ingénieur senior.
Si vous souhaitez approfondir vos connaissances sur la création de ces systèmes, veuillez consulter notre cours Introduction aux API en Python .
Je suis ingénieur de données et créateur de communautés. Je travaille sur les pipelines de données, le cloud et les outils d'IA, tout en rédigeant des tutoriels pratiques et percutants pour DataCamp et les développeurs émergents.
Questions fréquentes
Dois-je mémoriser les spécifications RFC relatives aux méthodes HTTP ?⌄
Absolument pas. Les examinateurs souhaitent s'assurer que vous comprenez les implications pratiques, et non que vous récitez la documentation. Concentrez-vous sur l'importance de l'idempotence lorsqu'une requête réseau échoue et doit être réessayée. C'est ce qui distingue la réflexion des juniors de celle des seniors.
Que faire si l'on me pose des questions sur SOAP ou XML-RPC en 2026 ?⌄
Cela se produit plus souvent qu'on ne le pense, en particulier pour les postes dans les banques, le secteur de la santé ou les entreprises sous-traitantes du gouvernement. Il est essentiel d'expliquer pourquoi ces protocoles plus anciens existent toujours (contrats stricts, sécurité au niveau des messages) plutôt que de les rejeter comme étant obsolètes. Démontrez que vous comprenez les compromis, et pas seulement les tendances.
Comment puis-je m'exercer à la conception d'API sans projet concret ?⌄
Veuillez sélectionner un service que vous utilisez quotidiennement (Spotify, Twitter, le système de réservation de votre salle de sport) et esquissez la manière dont vous concevriez son API. Quels points finaux envisageriez-vous de créer ? Comment géreriez-vous la pagination pour la liste de lecture d'un utilisateur contenant 10 000 chansons ? Cet exercice permet de mettre rapidement en évidence les lacunes dans votre compréhension.
Les examinateurs évaluent-ils réellement OAuth 2.1, ou OAuth 2.0 reste-t-il prédominant ?⌄
La plupart des entreprises utilisent encore OAuth 2.0, mais le fait de savoir que la version 2.1 impose le PKCE pour tous les clients démontre que vous restez à jour en matière de bonnes pratiques de sécurité. Veuillez le mentionner comme « la direction que prend l'industrie » plutôt que de supposer que tout le monde est déjà au courant.
Quelle est la principale difficulté rencontrée par la plupart des candidats ?⌄
Ne pas poser de questions de clarification lors de la conception du système. Lorsqu'on leur demande de « concevoir une API », les candidats se concentrent immédiatement sur les points de terminaison sans s'interroger sur l'échelle, les exigences de cohérence ou le caractère interne ou public de cette API. Les meilleures réponses commencent par des questions, et non par des solutions.
Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Apprenez à utiliser JSON en Python, notamment la sérialisation, la désérialisation, le formatage, l'optimisation des performances, la gestion des API, ainsi que les limites et les alternatives de JSON.
Les API REST sont à la base de la plupart des intégrations sur Internet. Que vous postuliez pour un poste dans le domaine du backend, du full stack ou de l'ingénierie logicielle, vous serez probablement confronté à des questions sur la conception d'API REST, les méthodes HTTP et les modèles d'authentification.
Dans ce guide, je vais vous présenter les questions que les recruteurs posent réellement. Je les ai classées par niveau de difficulté et par type de poste, afin que vous puissiez vous concentrer sur ce qui importe le plus pour le poste que vous visez. Chaque réponse comprend des exemples pratiques et, le cas échéant, des extraits de code que vous pouvez adapter.
Il est important de garder à l'esprit que les examinateurs évaluent les connaissances fondamentales bien plus souvent que les sujets avancés. Si vous maîtrisez les bases (méthodes HTTP, codes d'état, absence d'état), vous serez en mesure de répondre avec assurance à la plupart des questions relatives aux API REST lors d'un entretien. Les motifs architecturaux sophistiqués apparaissent plus tard.
Questions d'entretien sur les API REST de base
Ces questions évaluent vos connaissances fondamentales. Attendez-vous à ce qu'elles soient abordées dans presque tous les entretiens, quel que soit le niveau hiérarchique.
1. Qu'est-ce que REST et quelles sont ses contraintes ?
REST signifie « Representational State Transfer » (transfert d'état représentatif). Il s'agit d'un style architectural pour la conception d'applications en réseau, défini par Roy Fielding dans sa thèse de doctorat en 2000.
REST comporte six contraintes :
2. Quelle est la différence entre REST et SOAP ?
REST est un style architectural ; SOAP est un protocole. REST utilise généralement JSON sur HTTP et exploite les méthodes HTTP standard. SOAP utilise exclusivement le langage XML et définit son propre format de messagerie avec des enveloppes et des adresses.
Aspect
REPOS
SOAP
Format
JSON, XML, autres
XML uniquement
Transport
HTTP
HTTP, SMTP, autres
Mise en cache
Mise en cache HTTP native
Non mémorisable
Performance
Léger
Frais généraux plus élevés
SOAP restepertinent pour les systèmes d'entreprise nécessitant des contrats formels (WSDL) ou une sécurité au niveau des messages (WS-Security).
3. Que sont les méthodes HTTP et dans quels cas les utilise-t-on ?
Les méthodes HTTP définissent l'action à effectuer sur une ressource.
Méthode
Objectif
Exemple
GETRécupérer une ressource
GET /users/123POSTVeuillez créer une nouvelle ressource.
POST /usersPUTRemplacer entièrement une ressource
PUT /users/123PATCHMettre à jour partiellement une ressource
PATCH /users/123DELETESupprimer une ressource
DELETE /users/1234. Quelle est la différence entre PUT et POST ?
POST crée une nouvelle ressource dont l'URI est déterminée par le serveur. PUT remplace une ressource à une URI spécifique indiquée par le client.
Si vous effectuez une opération PUT sur une URI qui n'existe pas, le serveur peut la créer. Si vous effectuez une opération PUT sur une URI existante, vous remplacez l'intégralité de la ressource.
5. Quelle est la différence entre PUT et PATCH ?
PUT remplace l'intégralité de la ressource. PATCH applique des modifications partielles.
6. Que signifie « sans état » dans REST ?
« Stateless » signifie que chaque requête doit contenir toutes les informations dont le serveur a besoin pour la traiter. Le serveur ne stocke aucun contexte client entre les requêtes.
Cela signifie qu'il n'y a pas de sessions côté serveur. Si un utilisateur est authentifié, le client doit envoyer des informations d'identification (généralement un jeton) avec chaque requête.
7. Qu'est-ce qui caractérise une API RESTful ?
Une API est véritablement RESTful lorsqu'elle satisfait à toutes les contraintes REST, y compris HATEOAS (Hypermedia as the Engine of Application State). Dans la pratique, la plupart des API qui se qualifient de « REST » sont en réalité « de type REST » ou correspondent au niveau 2 du modèle de maturité de Richardson. Et honnêtement, cela convient parfaitement à la plupart des cas d'utilisation.
Niveaux du modèle de maturité de Richardson pour les API REST. Image fournie par l'auteur.
8. Quels sont les codes d'état HTTP de base qu'il est important de connaître ?
Il est important de connaître au moins ces sept codes d'état essentiels qui couvrent la majorité des scénarios API :
Code
Nom
Quand utiliser
200
OK
GET, PUT, PATCH réussis
201
Créé
POST réussi (inclure l'en-tête Location)
204
Aucun contenu
Suppression réussie
400
Demande incorrecte
Syntaxe incorrecte
404
Non trouvé
La ressource n'existe pas
500
Erreur interne du serveur
Défaillance côté serveur
9. Quelle est la différence entre une ressource et un point de terminaison ?
Une ressource est une entité de données (utilisateur, commande, produit). Un point de terminaison est le chemin d'accès URL qui permet d'accéder à cette ressource.
10. Quelles sont les meilleures pratiques en matière de conception d'URI ?
Veuillez utiliser des noms, et non des verbes. Veuillez utiliser des minuscules et des tirets pour les noms composés de plusieurs mots dans les URI. Veuillez utiliser des noms pluriels pour les collections.
Veuillez éviter les imbrications profondes. Au lieu de
/users/123/posts/456/comments/789, veuillez envisager/comments/789ou/comments?post_id=456.11. Qu'est-ce que l'idempotence et quelles méthodes HTTP sont idempotentes ?
Une opération est idempotente si l'effectuer plusieurs fois produitle même résultat que de l'effectuer une seule fois.
Méthode
Idempotent
Pourquoi
GETOui
La lecture ne modifie pas l'état
PUTOui
Le remplacement par les mêmes données donne le même résultat.
DELETEOui
Supprimer deux fois entraîne la suppression définitive de la ressource.
POSTNon
Créer deux fois génère deux ressources.
PATCHNon
Cela dépend de l'opération.
Un PATCH qui définit une valeur estidempotent ; un PATCH qui incrémente un compteur ne l'est pas.
12. Quelle est la différence entre les méthodes sûres et les méthodes idempotentes ?
Les méthodes sécurisées ne modifient pas les ressources (GET, HEAD, OPTIONS). Les méthodes idempotentes peuvent être appelées plusieurs fois avec le même effet (GET, PUT, DELETE).
Toutes les méthodes sécurisées sont idempotentes, mais toutes les méthodes idempotentes ne sont pas sécurisées. DELETE est idempotent mais n'est pas sécurisé car il modifie l'état.
13. Quand est-il préférable d'utiliser des paramètres de requête plutôt que des paramètres de chemin ?
Les paramètres de chemin identifient une ressource spécifique. Les paramètres de requête permettent de filtrer, trier ou paginer les collections.
14. Qu'est-ce que la négociation de contenu ?
La négociation de contenu permet aux clients de demander différentes représentations d'une ressource. Le client envoie un en-tête «
Accept» et le serveur répond avec le format approprié.15. Quel est l'objectif de la méthode OPTIONS ?
OPTIONS renvoie les méthodes HTTP prises en charge par un serveur pour une URL spécifique. Les navigateurs l'utilisent pour les requêtes CORS pré-vol afin de vérifier si les requêtes inter-origines sont autorisées.
Questions d'entretien intermédiaires sur l'API REST
Ces questions évaluent l'application pratique et la prise de décision. Veuillez les envisager pour des postes de niveau intermédiaire.
16. Quelle est la différence entre 401 et 403 ?
Il s'agit des deux codes d'état les plus fréquemment confondus. J'ai observé des ingénieurs expérimentés confondre ces concepts lors de revues de code.
401 Non autorisé
Signifie non authentifié. Le serveur ne reconnaît pas votre identité. Votre réponse devrait inviter l'utilisateur à se connecter.
403 Accès refusé
Signifie non autorisé. Le serveur reconnaît votre identité, mais vous ne disposez pas des autorisations nécessaires. Une nouvelle authentification ne sera pas utile.
Organigramme illustrant la distinction entre l'authentification et l'autorisation. Image fournie par l'auteur.
17. Quelle est la différence entre 400 et 422 ?
Voici quelques exemples illustrant la différence :
400 Demande incorrecte
Cela indique une syntaxe incorrecte. Le serveur n'est pas en mesure d'analyser la requête (structure JSON non valide, en-têtes obligatoires manquants).
422 Entité non traitée
Cela indique une syntaxe valide mais des erreurs sémantiques. Le JSON est valide, mais les données ne passent pas la validation (format d'adresse e-mail non valide, mot de passe trop court).
18. Quand est-il approprié d'utiliser le code 409 Conflict ?
Utilisez 409 lorsque la requête est en conflit avec l'état actuel de la ressource :
19. Comment mettez-vous en œuvre la pagination ?
Deux approches principales :
Pagination basée sur le décalage
Simple, mais présente des problèmes de performance avec les ensembles de données volumineux.
Pagination à l'aide du curseur
Évolue mieux et évite la « dérive des pages » lorsque les données changent.
Des entreprises telles que Stripe, GitHub et Slack utilisent la pagination par curseur pour les grands ensembles de données.
20. Quelles sont les stratégies courantes de gestion des versions d'API ?
Il existe trois approches principales, chacune présentant des avantages et des inconvénients différents :
Gestion des versions URI
C'est le cas le plus fréquent. Il est explicite et facile à déboguer.
Versionnement des en-têtes
URL plus claires, mais plus difficiles à tester dans les navigateurs.
Gestion des versions des paramètres de requête
Facile à ajouter, mais encombre les URL.
21. Qu'est-ce qu'un ETag et comment fonctionne la mise en cache ?
Un ETag est un identifiant de version pour une ressource. Le serveur l'envoie dans ses réponses ; le client le renvoie dans les requêtes suivantes afin de vérifier si la ressource a changé.
22. Quelles méthodes d'authentification sont utilisées pour les API REST ?
Les quatre méthodes d'authentification les plus courantes sont les clés API, les jetons porteurs, OAuth 2.0 et JWT :
Méthode
Cas d'utilisation
Avantages
Inconvénients
Clés API
De serveur à serveur
Simple
Sans date d'expiration, susceptible de fuir
Jetons au porteur
Authentification de session
Apatride
Il est impératif de garantir un stockage sécurisé.
OAuth 2.0
Accès par des tiers
Autorisation déléguée
Mise en œuvre complexe
JWT
Authentification sans état
Autonome
Il n'est pas possible de révoquer sans liste noire.
23. Qu'est-ce que le JWT et comment fonctionne-t-il ?
Le JWT (JSON Web Token) se compose de trois parties : En-tête, charge utile et signature. Veuillez vous renseigner sur l'utilisation de JSON dans Python.
Le serveur signe le jeton ; les clients l'envoient avec leurs requêtes. Le serveur valide la signature sans effectuer de recherche dans la base de données.
24. Quelle est la différence entre RS256 et HS256 ?
HS256 (symétrique) : Même secret signe et vérifie. Risque si plusieurs services doivent vérifier les jetons.
RS256 (asymétrique) : La clé privée signe, la clé publique vérifie. Recommandé pour les systèmes distribués où plusieurs services valident les jetons.
25. Qu'est-ce que HATEOAS ?
HATEOAS (Hypermedia as the Engine of Application State) signifie que les réponses incluent des liens vers des actions et des ressources connexes.
Dans la pratique, la plupart des API n'implémentent pas HATEOAS dans son intégralité. Comprenez le concept, mais ne vous attendez pas à le mettre en œuvre dans la plupart des emplois. Même les grandes entreprises technologiques développent rarement des API entièrement conformes à HATEOAS.
26. Comment gérez-vous les erreurs de manière cohérente ?
Veuillez utiliser le format RFC 7807 Problem Details pour des réponses d'erreur cohérentes :
27. Qu'est-ce que la limitation de débit et pourquoi est-elle importante ?
La limitation du débit protège votre API contre les abus et garantit une utilisation équitable. Réponse courante :
28. Comment concevez-vous le filtrage et le tri ?
Veuillez utiliser des paramètres de requête avec des conventions claires :
Questions d'entretien avancées sur l'API REST
Ces questions évaluent la réflexion architecturale. Veuillez les envisager pour des postes de haut niveau.
29. Quels sont les changements entre OAuth 2.0 et OAuth 2.1 ?
OAuth 2.1 consolide les meilleures pratiques en matière de sécurité :
Caractéristique
OAuth 2.0
OAuth 2.1
PKCE
Optional
Obligatoire pour tous les clients
Subvention implicite
Prise en charge
Supprimé
Octroi de mot de passe
Prise en charge
Supprimé
URI de redirection
Correspondance flexible
Correspondance exacte requise
Point essentiel à retenir : veuillez utiliser le flux de code d'autorisation avec PKCE pour tous les types de clients.
30. Comment mettez-vous en œuvre l'idempotence pour les points de terminaison de paiement ?
Veuillez utiliser des clés idempotentes pour sécuriser les requêtes POST en cas de nouvelles tentatives :
Le client génère un UUID et l'envoie avec la requête. Si la même clé est à nouveau reçue, renvoyez la réponse mise en cache.
31. Comment concevriez-vous un limiteur de débit distribué ?
Pour les systèmes distribués, il n'est pas possible d'utiliser des compteurs en mémoire, car le trafic est réparti entre les instances. Il s'agit d'un piège courant qui pose des difficultés aux candidats.
Architecture :
32. Dans quels cas préférez-vous utiliser gRPC plutôt que REST ?
Le choix entre gRPC et REST dépend de vos besoins spécifiques.
Optez pour gRPC dans les cas suivants :
Veuillez choisir REST pour :
33. Comment gérez-vous les opérations de longue durée ?
Veuillez utiliser le modèle de requête asynchrone :
Le client envoie une demande
Le serveur renvoie
202 Acceptedavec une URL d'état.Le client interroge l'URL d'état jusqu'à ce que l'opération soit terminée.
34. Qu'est-ce que le modèle Saga ?
Saga gère les transactions distribuées entre les microservices sans verrouillage. Chaque service exécute une transaction locale et publie un événement. Si une étape échoue, les transactions compensatoires annulent les étapes précédentes.
35. Quelles sont les vulnérabilités de sécurité courantes liées aux JWT ?
Confusion algorithmique L'attaquant remplace RS256 par HS256 et signe avec la clé publique. Correction : veuillez toujours ajouter les algorithmes à la liste blanche.
Algorithme « none » : L'attaquant supprime complètement la signature. Correction : rejeter l'algorithme « none ».
Questions relatives à l'API REST pour les développeurs backend
Ces questions se concentrent sur les détails de mise en œuvre côté serveur, l'optimisation des bases de données et les modèles de performance auxquels les ingénieurs backend sont confrontés quotidiennement.
36. Qu'est-ce que le problème de requête N+1 ?
Le problème N+1 survient lorsque vous récupérez N enregistrements, puis exécutez une requête distincte pour chaque relation d'enregistrement.
Solutions :
Django : Veuillez utiliser
select_related()pour les clés étrangères etprefetch_related()pour les relations plusieurs-à-plusieurs.SQLAlchemy : Veuillez utiliser
joinedload()ouselectinload().37. Comment configurez-vous le regroupement de connexions ?
Le regroupement de connexions réutilise les connexions à la base de données au lieu d'en créer de nouvelles pour chaque requête.
38. Quelles stratégies de mise en cache connaissez-vous ?
Il existe trois stratégies principales de mise en cache, chacune étant optimisée pour différents modèles d'accès :
Stratégie
Description
Cas d'utilisation
Cache-Aside
L'application vérifie le cache, puis la base de données.
Nécessite une lecture approfondie, tolère la répétition
Écriture directe
Écrire simultanément dans le cache et la base de données
La cohérence est essentielle
Écriture différée
Écrire dans le cache, mise à jour asynchrone de la base de données
Débit d'écriture élevé
39. Comment mettez-vous en œuvre la vérification de signature webhook ?
La vérification de la signature Webhook garantit que la demande provient bien de l'expéditeur attendu. Voici une implémentation utilisant HMAC :
40. Quels indicateurs permettent d'évaluer la santé d'une API ?
Il est recommandé de surveiller ces quatre indicateurs clés pour évaluer la santé de votre API :
Système métrique
Description
Seuil d'alerte
Latence P50
Temps de réponse médian
Référence
Latence P99
Les 1 % les plus lents
2 secondes pendant 5 minutes
Taux d'erreur
Pourcentage de 4xx/5xx
1 % pendant 5 minutes
Débit
Demandes par seconde
Planification de la capacité
Questions sur l'API REST pour les développeurs Full Stack
Ces questions évaluent votre compréhension des préoccupations liées aux clients et aux serveurs, en particulier la sécurité des navigateurs, la gestion des états et la communication inter-origines.
41. À quel moment un navigateur envoie-t-il une requête CORS pré-vol ?
Les navigateurs envoient une requête OPTIONS préalable pour :
42. Comment configurer CORS de manière sécurisée ?
Une configuration CORS sécurisée nécessite d'ajouter explicitement les origines à la liste blanche et de gérer avec soin les informations d'identification. Voici une configuration sécurisée d'Express.js :
Veuillez ne jamais utiliser de caractères génériques (
*) avec les informations d'identification. Veuillez ne jamais autoriser l'originenull.43. Où devriez-vous stocker les jetons sur le client ?
Le stockage des jetons implique des compromis en matière de sécurité entre les vulnérabilités XSS et CSRF.
Stockage
Risque XSS
CSRF Risk
Recommandation
stockage local
Élevé
Aucun
Veuillez éviter les jetons
Cookie HttpOnly
Faible
Nécessite une atténuation
Recommandé
En mémoire
Faible
Faible
Idéal pour les jetons d'accès
Meilleures pratiques : Veuillez stockerles jetons d'actualisationdans des cookies HttpOnly à l'aide de l'
SameSite=Strict. Veuillez conserver les jetons d'accès en mémoire.44. Quand est-il préférable d'utiliser les WebSockets plutôt que le SSE ?
Le choix dépend de la nécessité d'une communication bidirectionnelle et de la manière dont vous souhaitez gérer la reconnexion :
Caractéristique
WebSockets
SSE
Direction
Bidirectional
Du serveur au client
Reconnexion
Manuel
Automatique
Données binaires
Oui
Non
Veuillez utiliser SSE pour les notifications, les flux en direct et les cotations boursières. Veuillez utiliser les WebSockets pour le chat, les jeux multijoueurs et l'édition collaborative.
45. Comment gérez-vous les téléchargements de fichiers ?
Pour les fichiers volumineux, veuillez utiliser les téléchargements par morceaux avec suivi de la progression :
Questions sur l'API REST basées sur des scénarios
Ces questions évaluent votre capacité à appliquer les principes REST à des problèmes concrets. Les recruteurs souhaitent comprendre votre processus de conception et la manière dont vous procédez aux compromis architecturaux.
46. Concevez une API REST pour un système de réservation hôtelière.
Un système de réservation hôtelière doit être capable de gérer les recherches, les vérifications de disponibilité et les réservations tout en évitant les doubles réservations. Voici les principales ressources :
Ressources :
/hotels- Liste et recherche d'hôtels/hotels/{id}/rooms- Chambres disponibles/bookings- Créer et gérer les réservations/guests/{id}- Profils des invitésDécisions importantes :
47. Comment mettriez-vous en œuvre les suppressions temporaires ?
Veuillez ajouter un
deleted_athorodatage au lieu de supprimer des enregistrements :48. Comment procéder à la migration de la version 1 vers la version 2 sans perturber les clients ?
Veuillez utiliser le modèle Strangler Fig :
49. Comment concevriez-vous une API de recherche avec un filtrage complexe ?
Pour une recherche de produit avec plusieurs filtres :
Décisions relatives à la conception :
50. Comment gérez-vous la gestion des versions API dans une architecture microservices ?
Options :
Gestion des versions au niveau de la passerelle: La passerelle API achemine
/v1/*vers les anciens services et/v2/*vers les nouveaux.Gestion des versions au niveau du service : Chaque service gère sa propre négociation de version.
Contrats axés sur le consommateur : Veuillez utiliser Pact ou des outils similaires pour garantir la compatibilité.
Pour la plupart des équipes, la gestion des versions au niveau de la passerelle offre la séparation la plus claire.
51. Comment mettriez-vous en œuvre la limitation du débit pour différents niveaux d'utilisateurs ?
La solution consiste à définir des limites spécifiques à chaque niveau et à les vérifier à l'aide des compteurs Redis :
Questions relatives à l'API REST comportementale
Ces questions évaluent vos compétences en communication et votre capacité à gérer les défis liés aux API dans le monde réel. Concentrez-vous sur la démonstration de votre processus de résolution de problèmes et de votre manière de collaborer avec les parties prenantes.
52. Expliquer REST à une personne non initiée à la technologie
Considérez une API REST comme un serveur dans un restaurant. Il n'est pas possible pour vous (le client) d'accéder directement à la cuisine. Au lieu de cela, vous indiquez au serveur ce que vous souhaitez commander sur le menu, et il vous l'apporte. Le menu est similaire à la documentation de l'API, il répertorie les options disponibles. Le serveur suit des règles spécifiques : vous demandez quelque chose (GET), vous commandez quelque chose de nouveau (POST) ou vous renvoyez quelque chose (DELETE). Si la cuisine est à court d'un produit, le serveur vous en informe (404 Not Found) afin que vous n'attendiez pas indéfiniment.
Cette analogie s'applique remarquablement bien aux réunions avec les parties prenantes.
53. Veuillez décrire une occasion où vous avez optimisé une API.
Veuillez utiliser la méthode STAR :
54. Comment communiquez-vous les modifications importantes aux utilisateurs de l'API ?
Veuillez annoncer à l'avance: Veuillez nous informer au moins 6 à 12 mois à l'avance de tout changement important.
Veuillez utiliser l'en-tête Sunset:
Sunset: Sat, 31 Dec 2026 23:59:59 GMTFournir des guides de migration : Veuillez documenter précisément les changements et la manière de s'y adapter.
Veuillez exécuter les deux versions : Continuer à utiliser l'ancienne version pendant la transition
Surveiller l'utilisation : Veuillez identifier les clients qui utilisent encore l'ancienne version.
55. Quelle documentation établissez-vous pour les API ?
Les documents essentiels comprennent :
56. Dans quels cas ne recommanderiez-vous pas l'utilisation de REST ?
REST n'est pas toujours le choix le plus approprié. Savoir quand utiliser des alternatives à l' témoigne d'une grande maturité architecturale. J'ai observé des équipes imposer l'utilisation de REST dans des cas où cela engendre plus de problèmes que cela n'en résout.
Scénario
Meilleure alternative
Discussion en temps réel ou jeux
WebSockets
Services internes de haute performance
gRPC
Requêtes de données imbriquées complexes
GraphQL
Architectures orientées événements
Courtiers de messages (Kafka, RabbitMQ)
Diffusion bidirectionnelle
gRPC bidirectionnel ou WebSockets
Référence rapide de l'API REST
Veuillez utiliser cette section comme référence rapide lorsque vous avez besoin de vérifier les propriétés des méthodes HTTP, les codes d'état ou les modèles courants lors de la préparation d'un entretien ou d'un développement en situation réelle.
Comparaison des méthodes HTTP
Ce tableau résume les principales propriétés de chaque méthode HTTP,vous aidant ainsi àchoisir celle qui convient le mieux à votre cas d'utilisation.
Méthode
Sûr
Idempotent
Mémorisable
Utilisation habituelle
OBTENIR
Oui
Oui
Oui
Récupérer une ressource
PUBLIER
Non
Non
Conditional
Créer une ressource
VEUILLEZ NOTER QUE
Non
Oui
Non
Veuillez remplacer la ressource
PATCH
Non
Non
Conditional
Mise à jour partielle
SUPPRIMER
Non
Oui
Non
Supprimer la ressource
TÊTE
Oui
Oui
Oui
Obtenir uniquement les en-têtes
OPTIONS
Oui
Oui
Non
Pré-vol CORS
Référence des codes d'état
Voici les codes d'état HTTP les plus couramment utilisés, classés par catégorie. Concentrez-vous sur la compréhension de l'utilisation de chacun plutôt que sur la mémorisation de l'ensemble des spécifications.
2xx Réussite
Erreurs client 4xx
Erreurs 5xx du serveur
Erreurs courantes à éviter
Même les développeurs expérimentés peuvent se trouver confrontés à ces difficultés. Veuillez prêter attention aux pièges courants suivants lors de la conception ou de la mise en œuvre d'API REST :
Utilisation de verbes dans les URL (par exemple,
/getUsersau lieu de/users)Renvoyer 200 OK pour les états d'erreur, ce qui perturbe la gestion des erreurs côté client
Confusion entre les codes d'erreur 401 et 403 (authentification vs. Autorisation)
URL imbriquées au-delà de deux niveaux
Stockage des jetons dans localStorage (crée des vulnérabilités XSS)
Ignorer l'idempotence pour les requêtes POST
Renvoi de messages d'erreur génériques sans détails exploitables
Conclusion
Je reconnais que mémoriser des définitions ne garantit pas la réussite à tous les entretiens techniques. En réalité, l'ingénierie dans le monde réel nécessite souvent de déroger aux règles « strictes » dont nous venons de discuter, et les examinateurs s'intéressent davantage à votre raisonnement qu'à votre capacité à réciter les spécifications RFC. Pour les postes hautement spécialisés, une connaissance approfondie du domaine ou une expertise spécifique dans un cadre particulier peut encore être le facteur déterminant.
Cependant, il est important de maîtriser ces principes fondamentaux REST, même si vous ne rencontrez pas ces questions précises. Il sert de modèle pour comprendre le fonctionnement du web moderne. Lorsque vous êtes invité à concevoir un nouveau système ou à résoudre un problème de production, comprendre la différence entre un 401 et un 403 (comme expliqué précédemment) vous permet de résoudre les problèmes plus rapidement. Vous comprendrez parfaitement pourquoi la standardisation de vos interactions API, et non pas seulement l'écriture de code fonctionnel, est la marque distinctive d'un ingénieur senior.
Si vous souhaitez approfondir vos connaissances sur la création de ces systèmes, veuillez consulter notre cours Introduction aux API en Python .