Une API est une interface de programmation d'applications. Elle sert de passerelle aux applications pour accéder à certaines ressources d'autres applications.
L'avantage de l'utilisation d'une API est de fournir un accès aux applications tierces afin qu'elles ne puissent pas accéder à l'ensemble des données de votre application. Elles ne peuvent accéder qu'aux données que vous exposez par l'intermédiaire de votre API.
L'application ou l'utilisateur qui souhaite accéder aux données est appelé client, et l'application qui fournit les données est appelée serveur.
Les API sont aujourd'hui largement utilisées dans toutes les architectures logicielles. Si vous postulez pour un poste d'ingénieur front-end, back-end, full-stack ou réseau, on vous posera beaucoup de questions sur les API.
Ceci étant dit, explorons quelques-unes des questions d'entretien les plus fréquemment posées sur les API REST.
Qu'est-ce que REST ?
Réponse: REST est une conception architecturale qui définit certaines contraintes relatives au fonctionnement des API. Les API qui suivent les principes de REST sont connues sous le nom d'API RESTful. REST signifie Transfert d'état représentationnel (Representational State Transfer)).
Il ne s'agit pas d'un protocole ou d'une norme, mais d'une architecture qui peut être utilisée pour mettre en œuvre des API de différentes manières.
Elle offre une grande flexibilité et une grande liberté aux développeurs, et c'est pourquoi elle est largement utilisée pour développer des API. Voici quelques-uns des principes de l'architecture REST :
- Séparation du client et du serveur: Dans une API RESTful, le client ne doit pas affecter le serveur d'une autre manière que celle de demander des données par l'intermédiaire d'un URI (Uniform Resource Identifier). De même, le serveur ne doit en aucun cas modifier le contenu du client.
- Apatridie: Lorsque deux demandes distinctes sont faites, elles ne se connaissent pas l'une l'autre. En d'autres termes, les demandes sont apatrides et ne conservent pas d'état. Si une demande est satisfaite, elle se termine simplement. Chaque demande est isolée des autres demandes.
- Architecture en couches: Le client ou le serveur ne sait pas si la demande est adressée directement à l'origine ou à une application intermédiaire. Seule la réponse à la demande les intéresse.
- Mise en cache: les données ou les réponses peuvent être mises en cache du côté du client comme du côté du serveur afin d'améliorer les performances et l'évolutivité. Si une ressource particulière fait l'objet de demandes fréquentes, la réponse à cette demande peut être mise en cache et utilisée en cas de besoin.
Quelles sont les principales caractéristiques de REST ?
Réponse: Les principales caractéristiques de REST sont les suivantes
- Flexibilité: Vous pouvez passer d'un serveur à un autre sans que cela ne change quoi que ce soit, car l'API enverra la même réponse pour une requête donnée. Vous pouvez également ajouter autant de points d'extrémité que vous le souhaitez pour différents types de données.
- Évolutivité: La mise en cache améliore l'évolutivité car les réponses sont sauvegardées pour une utilisation ultérieure. Elle diminue la charge sur le serveur et réduit également la latence.
- Autorisation: À l'aide de l'en-tête d'autorisation, vous pouvez spécifier les informations d'identification que le serveur peut utiliser pour autoriser la demande.
- Apatridie: Il s'agit de la caractéristique la plus importante de REST, car elle empêche les requêtes de savoir ce qui se passe avec d'autres requêtes. Les demandes sont isolées et terminées dès qu'elles sont satisfaites.
Que sont les ressources dans une architecture REST ?
Réponse: Les ressources sont des entités sur lesquelles différentes opérations sont effectuées, telles que la récupération, la mise à jour ou la suppression. Elles constituent les éléments de base de l'architecture REST.
Par exemple, si vous considérez un magasin de commerce électronique en ligne, les produits, les utilisateurs ainsi que les métadonnées sont considérés comme des ressources parce qu'ils peuvent faire l'objet d'opérations. Les ressources peuvent être transférées à une autre application par l'intermédiaire de l'API.
Mentionnez quelques avantages et inconvénients d'une API REST.
Réponse: Les avantages des API REST sont les suivants :
- Ils sont simples à mettre en œuvre.
- Les ressources peuvent être facilement gérées.
- Elles sont évolutives en raison de l'architecture client-serveur.
- Prise en charge de plusieurs types de supports de transfert de données tels que XML et JSON.
Ses inconvénients sont les suivants :
- Vous ne pouvez pas maintenir un état entre les demandes.
- La véritable origine de la ressource ne peut être connue en raison de l'architecture en couches.
- Il n'est pas adapté aux requêtes ou demandes complexes.
Définissez le modèle REST.
Réponse: Un modèle REST est un utilitaire ou un client qui vous permet d'accéder aux API REST dans le cadre de Spring. Il masque essentiellement le code de base que vous devez écrire pour demander une ressource à une API REST.
Qu'est-ce que RESTful ?
Réponse: Les API ou services RESTful sont des interfaces qui mettent en œuvre le style architectural REST(Transfert d'état représentationnel) et fonctionnent à l'aide de protocoles tels que HTTP.
Que sont les services Web RESTful ?
Réponse: Les services web RESTful sont conçus pour fonctionner au mieux sur le web. Representational State Transfer (REST) est un style architectural qui spécifie des contraintes, telles que l'interface uniforme, l'architecture en couches et l'absence d'état, qui, si elles sont appliquées à un service web, induisent des propriétés souhaitables, telles que la performance et l'évolutivité, qui permettent aux services de fonctionner au mieux sur le web.
Comment pouvez-vous tester les services Web RESTful ?
Réponse: Pour tester un service web RESTful, vous pouvez utiliser un client REST tel que Postman ou Thunder Client et interroger le service web que vous souhaitez tester. Ensuite, lorsque vous obtenez une réponse, comprenez-la ; c'est l'essentiel.
Si vous souhaitez tester une API complexe avec de nombreux points d'extrémité, vous devrez peut-être décomposer les tests et effectuer des tests unitaires, des tests d'intégration, des tests de performance et des tests de bout en bout.
Mentionnez quelques caractéristiques des services web RESTful.
Répondez: Voici quelques-unes des principales caractéristiques des services web RESTful :
- Prise en charge de plusieurs types de médias tels que JSON et XML.
- Évolutivité
- Isolation du client et du serveur
- Flexibilité
Définissez les classes de ressources racine RESTful.
Réponse: Les classes de ressources racines sont des "objets Java ordinaires" (POJO) qui sont annotés avec @Path ou qui ont au moins une méthode annotée avec @Path ou un désignateur de méthode de requête, tel que @GET
, @POST
, @PUT
ou @DELETE
.
Qu'est-ce qu'un URI ?
Réponse: URI signifie Uniform Resource Identifier (identifiant de ressource uniforme). Il s'agit d'une séquence de caractères utilisée pour localiser ou identifier les ressources d'une API ou d'un service. Il utilise le nom ou l'emplacement de la ressource pour l'identifier, mais ne s'appuie pas sur une méthode ou une technique particulière.
Qu'est-ce que l'apatridie dans REST ?
Réponse: L'absence de statut fait référence à une contrainte appliquée à une API dans laquelle deux requêtes ne peuvent pas savoir ce qui se passe l'une avec l'autre. En d'autres termes, l'état des demandes n'est pas conservé. Si la demande est satisfaite, elle se termine simplement après avoir reçu une réponse.
Qu'est-ce que JAX-RS ?
Réponse: JAX-RS est une API Java qui vous permet de développer des applications en Java qui utilisent l'architecture REST. Cette API facilite le développement d'applications REST en Java.
Quelles sont les principales annotations de l'API JAX-RS ?
Réponse: Les annotations de JAX-RS sont utilisées par les développeurs pour décorer les classes Java afin de définir les ressources et les méthodes qui peuvent être exécutées sur ces ressources. Les principales annotations de l'API JAX-RS sont les suivantes :
@GET
: Elle est utilisée pour effectuer des requêtes GET en HTTP.@POST
: Elle est utilisée pour effectuer des requêtes POST en HTTP.@Path
: Fait référence au chemin relatif d'une classe Java.@QueryParam
: Il s'agit des paramètres de requête de l'URI ou de l'URL.
Quelles sont les principales caractéristiques de l'API JAX-RS ?
Réponse: Les caractéristiques de JAX-RS sont les suivantes
- 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 configurer les applications JAX-RS ?
Réponse: Une application JAX-RS se compose d'au moins une classe de ressources intégrée à un fichier WAR. L'URI de base à partir duquel les ressources d'une application répondent aux demandes peut être défini de deux manières :
- En utilisant l'annotation @ApplicationPath dans une sous-classe de javax.ws.rs.core.Application intégrée au fichier 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 XML Web Services utilisée pour développer des API à l'aide du protocole SOAP (Simple Object Access Protocol), un protocole de messagerie basé sur XML.
D'autre part, JAX-RS est une API Java utilisée pour créer des services web à l'aide de l'architecture REST.
Que sont les codes d'état HTTP ?
Réponse: Les codes d'état ne sont rien d'autre qu'un moyen de communiquer l'état de la réponse envoyée par le serveur au client. Ils sont présents dans les en-têtes de réponse envoyés par le serveur.
Les codes d'état permettent au client de déterminer si la demande a échoué, si elle a été satisfaite ou si la réponse présente un problème.
Voici quelques codes d'état courants de HTTP:-
200
- Il s'agit du mot-clé "OK". Il signifie que la demande a été satisfaite et que la réponse est correcte.404
- C'est l'abréviation de "Not Found" (introuvable). Cela signifie qu'une ressource n'est pas présente sur le serveur ou qu'un point de terminaison n'existe pas.500
- C'est l'abréviation de "Internal Server Error" (erreur interne du serveur). Cela se produit généralement lorsque le serveur ne peut pas générer la bonne réponse ou qu'il y a une erreur qui n'est pas explicitement déclenchée.503
- C'est l'abréviation de "Service Unavailable" (service indisponible). Cela signifie que le serveur ne peut traiter aucune requête, probablement parce qu'il est mort ou qu'il ne fonctionne pas en raison d'une surcharge de requêtes. Cette erreur peut également se produire lorsque le serveur est en maintenance.
Que sont les méthodes HTTP ?
Réponse: Les méthodes HTTP sont utilisées pour effectuer un certain type d'action sur une ressource particulière d'une API. Par exemple, si vous souhaitez récupérer une liste de films à partir d'une API de collection de films, vous pouvez utiliser la méthode GET fournie par HTTP. Si vous souhaitez mettre à jour les données, vous pouvez utiliser la méthode POST fournie par HTTP.
Les méthodes HTTP fréquemment utilisées sont les suivantes :
- GET: Les requêtes utilisant la méthode GET doivent uniquement permettre de récupérer des données.
- POST: Cette méthode permet de mettre à jour la ressource en envoyant au serveur une ressource nouvellement mise à jour.
- DELETE: Supprimez la ressource spécifiée.
- PATCH: Il modifie partiellement la ressource.
Comment fonctionne l'authentification de base HTTP ?
Réponse: L'authentification est un processus qui permet de vérifier l'authenticité d'un client afin de maintenir la sécurité des données. Dans le protocole HTTP, l'authentification fonctionne par le biais d'un en-tête d'autorisation (Authorization Header) envoyé par le client.
L'en-tête d'autorisation se compose du nom d'utilisateur/identifiant et du mot de passe du client, qui sont ensuite vérifiés par le serveur, et l'accès est accordé.
Il est important de noter que lors de l'utilisation de l'authentification HTTP, le canal par lequel les informations d'identification sont transmises doit être crypté et sécurisé.
Vous pouvez sécuriser le canal en utilisant la couche SSL, qui est intégrée dans HTTPS. Il est donc recommandé d'utiliser HTTPS plutôt que le simple HTTP lorsque vous traitez des informations d'identification.
Quels sont les principaux composants d'une requête HTTP ?
Réponse: Une requête HTTP se compose des éléments suivants :
- Ligne de requête: C'est la première ligne de toute requête et elle comprend la méthode HTTP, le chemin ou le point de terminaison et le numéro de version HTTP.
- En-têtes: Les en-têtes HTTP sont utilisés pour fournir des métadonnées sur la demande.
- Corps d'armée (facultatif) : Ce composant n'est présent que pour certaines méthodes de requête. Il n'est pas nécessaire pour les requêtes GET, mais il l'est pour les requêtes POST. Il s'agit du message réel de la demande.
Quels sont les principaux composants de la réponse HTTP ?
Réponse: Une réponse HTTP se compose des éléments suivants :
- Statut: Il s'agit du code d'état HTTP envoyé par le serveur.
- En-têtes: Tout comme les requêtes, les réponses ont également leurs propres en-têtes, qui fournissent des informations utiles sur la réponse.
- Message: Il s'agit des données réelles envoyées par le serveur au client pour demander une ressource particulière.
Quelle est la différence entre REST et AJAX ?
Réponse: AJAX est un client qui vous permet d'accéder aux API RESTful. Il est utilisé pour envoyer des requêtes asynchrones à l'aide de JavaScript.
REST, ou Representational State Transfer, est une architecture qui peut être mise en œuvre pour créer des API RESTful. En résumé, pour envoyer des requêtes HTTP, vous pouvez utiliser AJAX qui sert de client, mais si vous voulez mettre en œuvre des API RESTful, vous devez utiliser l'architecture REST.
Quelle est la différence entre SOAP et REST ?
Réponse: Transfert d'état représentationnelSOAP, ou REST, est une architecture avec des contraintes minimales pour créer des API. SOAP, ou Protocole d'accès simple aux objets, est un protocole avec des exigences strictes pour mettre en œuvre une API.
REST est plus souple et plus facile à utiliser que SOAP. La messagerie basée sur XML est utilisée dans SOAP, alors que dans REST, vous pouvez utiliser de nombreux types de transfert de données tels que JSONXML, etc. Par rapport à SOAP, REST est plus léger et plus rapide.
Les services web SOAP sont dotés d'une sécurité intégrée, ce qui constitue un avantage par rapport à REST, mais les fonctionnalités supplémentaires rendent l'utilisation complexe et lourde.
Quelle est la différence entre PUT et POST ?
Réponse: POST est une méthode de requête HTTP qui envoie des données au serveur. Si vous effectuez plusieurs requêtes POST pour une ressource particulière, vos données peuvent subir des effets secondaires. Par exemple, si vous souhaitez ajouter un article à une collection, si vous effectuez plusieurs requêtes POST, plusieurs articles seront ajoutés à la collection, ce qui entraînera une redondance des articles.
PUT est une méthode de requête HTTP qui envoie des données au serveur pour une ressource particulière, mais qui ne met à jour les données qu'une seule fois. Si vous envoyez plusieurs requêtes PUT pour une ressource particulière, aucun effet secondaire ne se produira et les données ne seront ajoutées qu'une seule fois. Avec PUT, si la ressource n'existe pas, il en crée une nouvelle, et si elle existe, il met à jour la ressource existante.
PUT est idempotent, alors que POST ne l'est pas.
Qu'est-ce qu'une charge utile ?
Réponse: Dans une API REST, une charge utile est simplement le corps de la requête envoyée par le client au serveur. Il s'agit des données que vous souhaitez envoyer au serveur et obtenir une réponse.
Quelle est la taille maximale de la charge utile qui peut être envoyée dans les méthodes Post ?
Réponse: Il n'y a pas de limite par défaut fixée par le protocole HTTP lui-même. La limite peut dépendre de la limite maximale du client ou du serveur, selon la limite minimale.
Quelles sont les meilleures pratiques à suivre lors de la création d'un URI ?
Réponse: Voici quelques-uns des points clés que vous devez garder à l'esprit lors de la conception des URI :
- Évitez d'utiliser des extensions de fichiers
- Soyez cohérent avec tous les URI
- Divisez les URI en domaines et sous-domaines pour différents ensembles de ressources
- Vous devez utiliser le trait d'union ou le trait de soulignement pour séparer les mots des phrases intégrées dans les URI
- Utilisez la barre oblique pour indiquer une hiérarchie de ressources
- Encodez un URI en utilisant l'encodage approprié
- Essayez de rendre l'URI lisible par l'homme
Que sont les méthodes idempotentes ?
Réponse: Les méthodes HTTP idempotentes ont le même effet sur le serveur malgré l'envoi de plusieurs requêtes identiques. Par exemple, si vous envoyez plusieurs requêtes DELETE identiques pour une ressource particulière, la ressource ne sera pas modifiée à chaque requête ; elle sera mise à jour comme si une seule requête avait été envoyée.
Les méthodes idempotentes sont notamment les suivantes
- PUT
- DELETE
- GET
- TÊTE
- OPTIONS
Qu'est-ce que Postman ?
Réponse: Postman est un outil de développement d'API qui permet de développer, de modifier et de tester les API. Il offre de nombreuses fonctionnalités permettant de créer et de tester rapidement des API sans avoir à configurer un client.
Que sont les en-têtes Cache-Control ?
Réponse: L'en-tête Cache-Control est constitué d'instructions ou de directives permettant de configurer la mise en cache dans les navigateurs et les serveurs. Il indique au navigateur ou au serveur ce qu'il faut mettre en cache et combien de temps il faut le mettre en cache avant qu'il ne soit sollicité par le réseau.
L'en-tête Cache-Control comprend les directives suivantes:-
- max-age
- no-cache
- privé
- public
- pas de magasin
- immuable
Définissez la messagerie dans les services Web RESTful.
Réponse: La messagerie dans les services Web RESTful fait référence à l'envoi par le client d'une requête HTTP au serveur, à laquelle le serveur répond par une réponse HTTP. Cette communication entre le client et le serveur est appelée messagerie.
Quelle est la différence entre l'architecture monolithique, l'architecture SOA et l'architecture microservices ?
Réponse: Dans une architecture monolithique, tout est géré en un seul endroit. Le client, le serveur et la base de données sont tous gérés au même endroit. C'est la raison pour laquelle on parle d'architecture monolithique, car le mot "monolithe" fait référence à un seul bloc ou à une seule pierre.
SOA est l'abréviation de Service-Oriented Architecture (architecture orientée services). Dans cette architecture, les différents aspects de l'application sont gérés par différents services, qui sont également des logiciels. Il s'agit donc d'une combinaison de plusieurs modules logiciels de services. L'intégration est l'élément clé de cette architecture.
L'architecture microservices est similaire à l'architecture SOA, mais contrairement à cette dernière, elle comporte plusieurs programmes logiciels autonomes qui communiquent entre eux à l'aide d'API. Contrairement à l'architecture monolithique, tout est autonome et, dans une certaine mesure, indépendant.
Comment fonctionne l'architecture microservices ?
Réponse: Dans une architecture de microservices, les applications sont divisées en sous-unités plus petites qui sont indépendantes les unes des autres et fonctionnent chacune de leur côté, mais elles communiquent entre elles par l'intermédiaire d'un ensemble bien défini d'API.
Parmi les avantages de l'architecture microservices, citons l'agilité, la flexibilité, l'évolutivité, l'indépendance des technologies, les services réutilisables et la facilité de déploiement.
Qu'est-ce que le CRUD ?
Réponse: CRUD signifie Create (créer), Read (lire), Update (mettre à jour), Delete (supprimer). Il s'agit des opérations qui peuvent être effectuées sur une ressource particulière. L'API qui prend en charge toutes ces opérations est appelée API CRUD. Il s'agit des opérations les plus élémentaires qu'une API peut effectuer 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 demande sur le client ou le serveur afin qu'elle puisse être réutilisée ultérieurement.
Les réponses sont généralement mises en cache sur le client, car si le client fait la même demande plusieurs fois dans un court intervalle de temps, il est inutile de redemander la réponse sur le réseau et de gaspiller la bande passante.
Quelle est l'utilité de @RequestMapping ?
Réponse: Il s'agit d'une annotation dans le cadre de Spring qui est utilisée pour mapper les demandes web sur des classes et/ou des méthodes de traitement spécifiques.
Que fait @PathVariable ?
Réponse: L'annotation @PathVariable dans le framework Spring est utilisée pour extraire la valeur des variables de template et assigner leur valeur à une variable de méthode.
Définissez HttpMessageConverter.
Répondez: Les convertisseurs de messages HTTP sont utilisés lorsqu'une requête HTTP (ou une partie de celle-ci) doit être convertie en un type nécessaire en tant qu'argument pour une méthode de traitement ou lorsque la valeur renvoyée par une méthode de traitement doit être convertie d'une manière ou d'une autre pour créer une réponse HTTP.
Quels sont les outils nécessaires pour tester votre API Web ?
Réponse: Voici quelques outils qui peuvent vous aider à tester votre API :
- Facteur
- Soyez rassurés
- Rest Sharp
- Katalon
- ReadyAPI
- Apigée
Le mot de la fin
De nos jours, les API sont devenues extrêmement populaires grâce à l'avènement de l'internet. Une autre raison de la popularité des API REST est qu'elles sont faciles à développer et à utiliser.
Si vous vous préparez à un entretien, réfléchissez aux questions ci-dessus sur les API REST qui pourraient vous être posées lors de votre entretien.
Ensuite, vous pouvez vérifier comment récupérer un site web à l'aide de l'API de récupération de données web de Geekflare.