40 questions et réponses fréquemment posées lors des entretiens avec l'API REST [2023]
Une API, acronyme d'Interface de Programmation Applicative, constitue une porte d'entrée essentielle, permettant à différentes applications d'échanger des informations et d'accéder à des ressources spécifiques les unes des autres. Elle agit comme un intermédiaire, un pont entre des systèmes.
L'intérêt majeur de l'utilisation d'une API réside dans la possibilité de limiter l'accès des applications tierces à des données ciblées de votre application. Au lieu d'un accès total, ces applications ne peuvent manipuler que les données que vous choisissez d'exposer via votre API, assurant ainsi une gestion fine de la sécurité et de la confidentialité.
Dans cette interaction, l'application ou l'utilisateur souhaitant obtenir des données est désigné comme le client, tandis que l'application fournissant ces données est appelée serveur.
Les API sont aujourd'hui omniprésentes dans tous les types d'architectures logicielles. Que vous postuliez à un poste d'ingénieur front-end, back-end, full-stack ou réseau, les questions concernant les API seront inévitables. Elles sont devenues une compétence de base.
Ceci étant posé, explorons quelques questions fréquemment posées lors d'entretiens techniques sur les API REST.
Qu'est-ce que REST ?
Réponse : REST, pour Representational State Transfer (Transfert d'État Représentationnel), est un style architectural qui impose un ensemble de contraintes sur la manière dont les API sont construites. Les API qui respectent ces principes sont qualifiées d'API RESTful. Il est important de noter que REST n'est ni un protocole, ni une norme, mais plutôt un modèle que l'on peut utiliser pour élaborer des API de diverses manières.
Ce modèle offre une grande souplesse et une liberté appréciable pour les développeurs, ce qui explique son adoption massive pour la création d'API. Voici quelques-uns des fondements d'une architecture REST :
- Séparation client-serveur : Dans une API RESTful, le client doit uniquement interagir avec le serveur par le biais de requêtes de données via un URI (Identifiant Uniforme de Ressource). Réciproquement, le serveur ne doit en aucun cas influencer le contenu du client.
- Absence d'état (Statelessness) : Chaque requête est traitée de manière isolée, sans connaissance des requêtes précédentes. Les requêtes sont indépendantes les unes des autres et ne conservent aucune information sur les échanges passés. Une requête est satisfaite et traitée complètement sans impact sur les suivantes.
- Architecture en couches : Le client ou le serveur ignore si la requête s'adresse directement à sa source ou à une application intermédiaire. Leur seule préoccupation est la réponse à la requête.
- Mise en cache : Les données ou les réponses peuvent être stockées temporairement (mises en cache) côté client et côté serveur afin d'améliorer les performances et l'évolutivité. Si une ressource est fréquemment demandée, la réponse peut être mise en cache pour une utilisation ultérieure, évitant ainsi des demandes répétitives au serveur.
Quelles sont les principales caractéristiques de REST ?
Réponse : Les caractéristiques essentielles de REST sont :
- Flexibilité : Un changement de serveur n'impacte pas l'API, qui continuera de fournir la même réponse pour une requête donnée. De plus, il est possible d'ajouter autant de points de terminaison que nécessaire pour différents types de données, permettant une grande adaptabilité.
- Évolutivité : La mise en cache améliore l'évolutivité en stockant les réponses pour une utilisation future, réduisant la charge sur le serveur et diminuant la latence pour les requêtes fréquentes.
- Autorisation : L'en-tête d'autorisation permet de spécifier les informations d'identification nécessaires pour que le serveur puisse authentifier une requête, assurant ainsi un accès sécurisé aux données.
- Absence d'état (Statelessness) : C'est une caractéristique centrale de REST. Elle assure que les requêtes sont indépendantes les unes des autres, garantissant l'isolation et la complétion de chaque requête dès qu'elle est satisfaite.
Que sont les ressources dans une architecture REST ?
Réponse : Les ressources sont les entités sur lesquelles les opérations sont exécutées. Cela peut être la récupération, la mise à jour ou la suppression de données. Elles sont les éléments constitutifs de base de l'architecture REST.
Par exemple, dans une boutique en ligne, les produits, les utilisateurs et leurs informations sont considérés comme des ressources, car ils peuvent être manipulés par l'API. Ces ressources peuvent être transférées vers une autre application par le biais de l'API.
Mentionnez quelques avantages et inconvénients d'une API REST.
Réponse : Les avantages des API REST sont les suivants :
- Simplicité de mise en œuvre.
- Facilité de manipulation des ressources.
- Évolutivité due à l'architecture client-serveur.
- Prise en charge de plusieurs formats de données, comme XML et JSON.
Les inconvénients incluent :
- L'impossibilité de conserver un état entre les requêtes.
- L'incertitude quant à l'origine réelle d'une ressource en raison de l'architecture en couches.
- L'inadaptation aux requêtes complexes.
Définir le modèle REST.
Réponse : Le modèle REST est un utilitaire ou un client qui permet d'accéder aux API REST dans l'environnement Spring. Il simplifie les requêtes en masquant le code standard nécessaire pour interagir avec une API REST.
Qu'est-ce que RESTful ?
Réponse : Les API ou services RESTful sont des interfaces qui suivent le style architectural REST et utilisent des protocoles comme HTTP pour leur fonctionnement.
Que sont les services Web RESTful ?
Réponse : Les services Web RESTful sont conçus pour fonctionner de manière optimale sur le Web. L'architecture REST, en imposant des contraintes telles que l'interface uniforme, l'architecture en couches et l'absence d'état, permet aux services Web d'atteindre de bonnes performances et une grande évolutivité, des propriétés essentielles pour un fonctionnement optimal sur le web.
Comment tester les services Web RESTful ?
Réponse : Pour tester un service Web RESTful, vous pouvez utiliser un client REST comme Postman ou Thunder Client. Ces outils vous permettent d'envoyer des requêtes au service et d'analyser les réponses. Une compréhension approfondie des réponses est essentielle pour le test.
Pour les API complexes avec de nombreux points de terminaison, il est conseillé de décomposer les tests et d'effectuer des tests unitaires, d'intégration, de performance et de bout en bout.
Mentionnez certaines fonctionnalités des services Web RESTful.
Réponse : Les principales fonctionnalités des services Web RESTful comprennent :
- Prise en charge de divers formats de données comme JSON et XML.
- Évolutivité.
- Isolement du client et du serveur.
- Flexibilité.
Définissez les classes de ressources racine RESTful.
Réponse : Les classes de ressources racine sont des objets Java ordinaires (POJO) qui sont annotés avec @Path ou qui contiennent au moins une méthode annotée avec @Path ou une annotation de méthode de requête comme @GET, @POST, @PUT ou @DELETE.
Qu'est-ce qu'un URI ?
Réponse : URI, pour Uniform Resource Identifier (Identifiant Uniforme de Ressource), est une chaîne de caractères utilisée pour localiser ou identifier une ressource dans une API ou un service. Il se base sur le nom ou l'emplacement de la ressource, mais il est indépendant de la manière d'y accéder.
Qu'est-ce que l'apatridie dans REST ?
Réponse : L'apatridie, ou absence d'état, est une contrainte appliquée aux API où chaque requête est traitée de manière isolée. Chaque requête est indépendante des autres, sans conservation de l'état. Une fois satisfaite, une requête est terminée sans affecter les requêtes suivantes.
Qu'est-ce que JAX-RS ?
Réponse : JAX-RS est une API Java qui permet de créer des applications utilisant l'architecture REST en Java. Cette API simplifie le développement des applications REST avec Java.
Quelles sont les annotations clés dans l'API JAX-RS ?
Réponse : Les annotations dans JAX-RS servent aux développeurs à décorer des classes Java afin de définir les ressources et les opérations possibles sur ces ressources. Voici quelques annotations clés de l'API JAX-RS :
- @GET : Utilisation pour exécuter des requêtes GET en HTTP.
- @POST : Utilisation pour envoyer des requêtes POST en HTTP.
- @Path : Fait référence au chemin relatif d'une classe Java.
- @QueryParam : Fait référence aux paramètres de requête dans un URI ou une URL.
Quelles sont certaines fonctionnalités clés de l'API JAX-RS ?
Réponse : Les fonctionnalités de JAX-RS comprennent :
- Mise en cache côté client.
- Mise en cache côté serveur.
- Personnalisation de la chaîne de requête.
- Annotations d'exécution.
Comment les applications JAX-RS peuvent-elles être configurées ?
Réponse : Une application JAX-RS est constituée d'au moins une classe de ressources incluse dans un fichier WAR. L'URI de base à partir duquel l'application répond aux requêtes peut être défini de deux manières :
- Via l'annotation @ApplicationPath dans une sous-classe de javax.ws.rs.core.Application incluse dans le WAR.
- En utilisant la balise servlet-mapping dans le descripteur de déploiement web.xml du WAR.
Que sont JAX-WS et JAX-RS ?
Réponse : JAX-WS est une API Jakarta pour les services web XML, utilisée pour créer des API avec le protocole SOAP (Simple Object Access Protocol), un protocole de messagerie XML.
À l'inverse, JAX-RS est une API Java utilisée pour construire des services web selon l'architecture REST.
Que sont les codes d'état HTTP ?
Réponse : Les codes d'état sont un moyen de transmettre l'état d'une réponse envoyée par le serveur au client. Ils figurent dans les en-têtes de réponse du serveur.
Le client utilise ces codes pour savoir si une requête a réussi, a échoué ou si un problème existe avec la réponse.
Voici quelques codes d'état HTTP courants :
- 200 – Signifie "OK". Indique que la requête a réussi et que la réponse est correcte.
- 404 – Signifie "Non trouvé". La ressource est introuvable sur le serveur ou le point de terminaison n'existe pas.
- 500 – Signifie "Erreur interne du serveur". Le serveur n'a pas pu produire la réponse correcte ou une erreur n'a pas été renvoyée explicitement.
- 503 – Signifie "Service indisponible". Le serveur ne peut pas traiter les requêtes, souvent à cause d'une surcharge, d'une panne ou de maintenance.
Que sont les méthodes HTTP ?
Réponse : Les méthodes HTTP servent à effectuer des actions spécifiques sur une ressource de l'API. Par exemple, la méthode GET sert à récupérer une liste de films, et la méthode POST à mettre à jour des informations.
Les méthodes HTTP les plus fréquemment utilisées sont :
- GET : Les requêtes GET ne servent qu'à récupérer des données.
- POST : Met à jour une ressource en envoyant une ressource mise à jour au serveur.
- DELETE : Supprime une ressource donnée.
- PATCH : Modifie partiellement une ressource.
Comment fonctionne l'authentification de base HTTP ?
Réponse : L'authentification permet de vérifier l'identité d'un client pour la sécurité des données. En HTTP, l'authentification se fait via un en-tête d'autorisation envoyé par le client.
Cet en-tête contient le nom d'utilisateur/identifiant et le mot de passe du client. Le serveur vérifie ces informations et accorde ou refuse l'accès en conséquence.

Il est crucial, lors de l'utilisation de l'authentification HTTP, de chiffrer le canal par lequel transitent les informations d'identification, pour garantir la sécurité.
La couche SSL, intégrée à HTTPS, sécurise ce canal. Il est donc fortement recommandé d'utiliser HTTPS au lieu de HTTP simple pour la transmission d'informations d'identification.
Quels sont les composants de base de la requête HTTP ?
Réponse : Une requête HTTP comprend :
- Ligne de requête : La première ligne de toute requête, composée de la méthode HTTP, du chemin ou du point de terminaison, et du numéro de version HTTP.
- En-têtes : Les en-têtes HTTP contiennent les métadonnées de la requête.
- Corps (facultatif) : Présent pour certaines méthodes comme POST. Contient le message réel de la requête. N'est pas requis pour les requêtes GET.
Quels sont les composants de base de la réponse HTTP ?
Réponse : Une réponse HTTP est composée de :
- Statut : Le code d'état HTTP envoyé par le serveur.
- En-têtes : Des informations sur la réponse, comme dans les requêtes.
- Message : Les données réelles envoyées par le serveur au client.
Quelle est la différence entre REST et AJAX ?
Réponse : AJAX est un client utilisé pour accéder aux API RESTful. Il permet d'envoyer des requêtes asynchrones via JavaScript.
REST est un modèle architectural pour créer des API RESTful. En bref, AJAX est utilisé pour envoyer des requêtes, tandis que l'architecture REST sert à développer des API.
Quelle est la différence entre SOAP et REST ?
Réponse : REST est une architecture avec des contraintes légères pour créer des API. SOAP est un protocole qui impose des règles strictes pour l'implémentation d'une API.
REST est plus flexible et facile à utiliser que SOAP. SOAP utilise des messages XML, tandis que REST accepte plusieurs formats comme JSON et XML. REST est plus léger et rapide que SOAP.
Les services Web SOAP intègrent des fonctionnalités de sécurité, un avantage, mais qui les rend complexes et lourds à utiliser comparés à REST.
Quelle est la différence entre PUT et POST ?
Réponse : POST est une méthode HTTP qui envoie des données au serveur. L'envoi multiple de requêtes POST pour une ressource peut causer des effets secondaires (ex: ajout de plusieurs doublons).
PUT envoie des données au serveur pour une ressource spécifique, mais ne met à jour les données qu'une seule fois. Des requêtes PUT multiples n'auront pas d'effets secondaires. PUT créera une nouvelle ressource si elle n'existe pas et mettra à jour une ressource existante si elle est déjà présente.
PUT est idempotent, contrairement à POST.
Qu'est-ce qu'une charge utile ?
Réponse : La charge utile (payload) dans une API REST est le corps de la requête envoyé du client au serveur. Ce sont les données à envoyer au serveur pour recevoir une réponse.
Quelle est la taille maximale de la charge utile pouvant être envoyée dans les méthodes de publication ?
Réponse : Le protocole HTTP ne définit pas de limite par défaut pour la taille de la charge utile. Cette limite dépend des capacités du client ou du serveur, la plus petite des deux prévalant.
Lors de la création d'URI, quelles sont les meilleures pratiques à suivre ?
Réponse : Voici quelques points clés pour concevoir des URI efficaces :
- Éviter les extensions de fichier.
- Maintenir une cohérence dans tous les URI.
- Diviser les URI en domaines et sous-domaines pour différents ensembles de ressources.
- Utiliser des tirets ou des underscores pour séparer les mots dans les URI.
- Utiliser des barres obliques pour indiquer une hiérarchie de ressources.
- Encoder l'URI en utilisant l'encodage approprié.
- Rendre l'URI lisible.

Que sont les méthodes idempotentes ?
Réponse : Les méthodes HTTP idempotentes ont un effet unique sur le serveur, peu importe le nombre de requêtes identiques. Par exemple, plusieurs requêtes DELETE pour une ressource auront le même effet qu'une seule requête, la ressource ne changera qu'une seule fois.
Les méthodes idempotentes incluent :
- PUT.
- DELETE.
- GET.
- HEAD.
- OPTIONS.
Qu'est-ce que le facteur ?
Réponse : Postman est un outil de développement d'API pour créer, modifier et tester des API. Il propose de nombreuses fonctions pour une création et un test rapides d'API, sans configuration de client.

Qu'est-ce que l'en-tête Cache-Control ?
Réponse : L'en-tête Cache-Control contient des instructions pour configurer la mise en cache dans les navigateurs et les serveurs. Il indique au navigateur ou serveur ce qui doit être mis en cache et pendant combien de temps.
Les directives de l'en-tête Cache-Control incluent :
- max-age.
- no-cache.
- private.
- public.
- no-store.
- immutable.
Définir la messagerie dans les services Web RESTful.
Réponse : Dans les services Web RESTful, la messagerie correspond à la communication entre le client et le serveur via l'envoi d'une requête HTTP par le client et la réponse HTTP du serveur.
Quelle est la différence entre l'architecture monolithique, SOA et microservices ?
Réponse : Une architecture monolithique gère tous les aspects d'une application en un seul bloc. Client, serveur et base de données sont regroupés et gérés au même endroit. C'est un ensemble unique.
SOA, ou Architecture Orientée Services, gère l'application en utilisant différents services logiciels. L'intégration est un élément clé de cette architecture.
L'architecture microservices est similaire à SOA, mais avec des unités logicielles autonomes communiquant via des API. Elle est plus indépendante qu'une architecture monolithique.
Comment fonctionne l'architecture des microservices ?
Réponse : L'architecture microservices divise les applications en petites unités autonomes qui communiquent via des API.
Les avantages de cette architecture sont l'agilité, la flexibilité, l'évolutivité, l'indépendance technologique, les services réutilisables et la facilité de déploiement.

Qu'est-ce que CRUD ?
Réponse : CRUD signifie Créer, Lire, Mettre à jour, Supprimer. Ce sont les opérations de base que l'on peut effectuer sur une ressource. Une API CRUD prend en charge ces opérations. Ce sont les opérations les plus courantes sur une ressource.
Qu'est-ce que la mise en cache ?
Réponse : La mise en cache est une technique de stockage d'une réponse ou d'une requête côté client ou serveur pour une réutilisation ultérieure.
Les réponses sont souvent mises en cache côté client, pour éviter des demandes réseau répétitives pour les mêmes données, économisant ainsi de la bande passante.
À quoi sert @RequestMapping ?
Réponse : @RequestMapping est une annotation du framework Spring qui permet de mapper les requêtes web sur des méthodes et des classes de gestionnaires.
Que fait @PathVariable ?
Réponse : L'annotation @PathVariable du framework Spring est utilisée pour récupérer les valeurs de variables dans une URL et de les affecter à une variable de méthode.
Définissez HttpMessageConverter.
Réponse : Les HttpMessageConverter servent à convertir des requêtes HTTP (ou parties) en un type nécessaire comme argument pour une méthode de gestionnaire, ou à convertir une valeur retournée en une réponse HTTP.
Réponse : Voici quelques outils utiles pour tester des API :
- Postman.
- Rest Assured.
- Rest Sharp.
- Katalon.
- ReadyAPI.
- Apigee.
Derniers mots
Les API sont devenues très répandues grâce à l'essor d'Internet. La popularité des API REST tient à leur facilité de développement et d'utilisation.
Si vous préparez un entretien technique, préparez-vous à répondre aux questions ci-dessus sur les API REST.
Vous pouvez aussi vous renseigner sur le scraping de sites web à l'aide de l'API Web Scraping de toptips.fr.