Quelle différence principale existe entre une page Web et une application Web ?
Une page Web est statique, une application Web est un logiciel accessible par Internet.
Qu'est-ce que le front-end dans une application Web ?
La partie graphique côté client avec laquelle l'utilisateur interagit.
Qu'est-ce que le back-end dans une application Web ?
La partie serveur qui fournit des services Web au front-end.
Quels objectifs un backend moderne cherche-t-il à atteindre ?
La simplicité, maintenabilité, abstraction, extensibilité, réutilisation, optimisation, modularité, séparation, bonne API, passage à l'échelle et fiabilité.
Quels outils sont recommandés pour le développement backend dans ce cours ?
Java 21, Maven 3, IntelliJ ou Visual Studio Code, Swagger Editor et GitLab.
Qu'est-ce que REST en architecture logicielle ?
REST est un style d’architecture défini en 2000.
Quels principes fondateurs caractérisent REST ?
La séparation client-serveur, l’absence d’état, la mise en cache et une interface uniforme.
En quoi une requête REST diffère-t-elle d'une requête HTTP classique ?
Une requête REST organise une ressource, une action, des données d’entrée et une réponse.
Qu'est-ce qu'une ressource REST ?
Un objet back-end identifié par une partie d’URI définissant des routes REST.
Comment s'identifie une route REST ?
Par le couple unique verbe HTTP et URI.
Pourquoi POST foo/bar et GET foo/bar ne sont-ils pas en conflit ?
Parce qu'ils ont des verbes HTTP différents.
Quels verbes REST principaux correspondent à créer, lire, supprimer, remplacer et modifier ?
POST crée, GET lit, DELETE supprime, PUT remplace, PATCH modifie.
Quelle version de Spring Boot utilise l'écosystème JAX-RS ?
Spring Boot 3 utilise l'écosystème JAX-RS.
Quelle version de Spring Boot est utilisée avec Java 21 et Maven dans ce cours ?
Spring Boot 3.4.1 est utilisée avec Java 21 et Maven.
Comment créer une ressource REST avec Spring Boot ?
Il faut créer une classe annotée avec @RestController et définir l'URI avec @RequestMapping.
Que définit @GetMapping(path = "world", produces = MediaType.TEXT_PLAIN_VALUE) ?
Une route GET avec l'URI "world" et une réponse en texte brut.
Quelle est la fonction principale d'une route POST en REST ?
Placer la donnée à créer dans le corps de la requête.
À quoi sert une route GET en REST ?
À récupérer des données en lecture seule.
Quelle différence y a-t-il entre PATCH et PUT concernant les attributs absents du JSON ?
Avec PATCH, les attributs absents ne sont pas définis et restent inchangés, avec PUT l'objet complet remplace l'objet ciblé.
Où les données d'une requête REST peuvent-elles être transmises ?
Dans le corps HTTP, dans l'URI de la route ou dans les paramètres de l'URI.
Quelles sont les différences principales entre le body et l'URI pour transmettre des données ?
Le body transmet des données complexes et moins exposées, l'URI est simple mais affiche les données en clair.
Une requête REST reçoit-elle toujours une réponse HTTP ?
Oui, même si la méthode Java retourne void.
Que peut contenir une réponse HTTP à une requête REST ?
Un code, des données et un message.
Quels codes HTTP sont présentés comme exemples ?
200 OK, 204 No Content, 400 Bad Request, 404 Not Found, 405 Method Not Allowed et 500 Internal Server Error.
Quelle règle doit suivre une API REST concernant les codes HTTP ?
Elle doit utiliser des codes HTTP adaptés, pas systématiquement le code 500 en cas d'erreur applicative.
Quels mécanismes sont recommandés pour gérer les codes HTTP dans une API REST ?
Utiliser ResponseEntity ou ResponseStatusException.
Qu'est-ce qu'un DTO en programmation ?
Une classe dédiée représentant uniquement les attributs à transférer entre back-end et client.
Pourquoi éviter de retourner un objet User avec l'attribut pwd ?
Cela peut exposer le mot de passe confidentiel.
Quelle différence entre marshalling et démarshalling ?
Le marshalling transforme un objet en format transmissible, le démarshalling fait l'inverse.
Comment Spring gère-t-il le marshalling JSON ?
Spring utilise nativement Jackson pour le marshalling JSON.
Que faut-il ajouter pour le marshalling XML avec Spring ?
Il faut ajouter la dépendance jackson-dataformat-xml.
Quel rôle joue @JsonTypeInfo dans le marshalling d'une interface Animal ?
Il ajoute un attribut type au JSON.
Quel est le rôle de @JsonSubTypes dans le marshalling ?
Il indique les classes concrètes utilisables lors du démarshalling.
Qu'est-ce qu'OpenAPI permet de faire avant l'implémentation d'une API REST ?
OpenAPI permet de modéliser et décrire une API REST.
Que peut générer OpenAPI après la modélisation d'une API ?
OpenAPI peut générer un squelette de code back-end et des tests.
Dans quels formats peut-on écrire une spécification OpenAPI ?
En YAML ou en JSON.
Quel outil est utilisé dans le cours pour modifier une spécification OpenAPI en YAML ?
Swagger Editor.
Quels éléments décrivent une route dans OpenAPI sous paths ?
Une URI, un verbe, des paramètres, une requête, des réponses HTTP et le schéma du contenu.
Quelle différence principale existe entre une API orientée CRUD et une API orientée application ?
L'API CRUD utilise des routes génériques, l'API application adapte les routes aux besoins du front-end.
Pourquoi la route /albumsSummary est-elle un exemple de route orientée application ?
Parce qu'elle fournit des données optimisées pour l'affichage résumé des albums.
Qu'est-ce qu'un service en Spring ?
Une classe annotée avec @Service dédiée à certains services utilisables par injection.
Que sépare la séparation des préoccupations en architecture Spring ?
Les routes sont gérées par le contrôleur et la logique métier par un service.
Qu'est-ce que le mapping objet-relationnel (ORM) ?
Une intégration convertissant attributs d'objets en valeurs stockables et inversement.
Quelle API d'ORM est utilisée avec Spring Boot dans ce cours ?
JPA, ou Jakarta Persistence API.
Quelle annotation doit avoir une classe pour être stockée en base avec une clé primaire ?
@Entity pour la classe et @Id pour la clé primaire.
Quel est le rôle de l'annotation @GeneratedValue ?
Initialiser et incrémenter automatiquement un identifiant.
Quelles stratégies l'annotation @GeneratedValue peut-elle utiliser ?
AUTO, SEQUENCE, IDENTITY, TABLE et UUID.
Pourquoi JPA nécessite-t-il des annotations explicites pour les relations entre objets ?
Il ne peut pas déduire automatiquement les relations entre références Java.
Qu'impose l'annotation @Id en JPA ?
Elle définit l'attribut clé primaire de l'entité.
Quelles sont les stratégies de génération d'identifiant en JPA ?
AUTO, SEQUENCE, IDENTITY, TABLE et UUID.
Que permet l'annotation @EmbeddedId ?
D'utiliser une clé primaire composée d'un attribut intégrable.
Comment se déclare une relation un-à-plusieurs en JPA ?
Avec @OneToMany(mappedBy = "list") côté TodoList.
Comment se déclare une relation plusieurs-à-un en JPA ?
Avec @ManyToOne côté Todo.
Quelle différence y a-t-il entre FetchType.LAZY et EAGER ?
LAZY charge les données à la demande, EAGER toujours.
Quels sont les modes de mapping d'héritage en JPA ?
SINGLE_TABLE, TABLE_PER_CLASS et JOINED.
Qu'est-ce que CrudRepository définit en Spring ?
Un repository CRUD pour un type d'objet et une clé donnés.
Quelles sont les opérations de base d'un repository Spring ?
save, delete, findById et findAll.
Que doit déclarer une entité pour que le repository identifie sa clé ?
Son attribut de clé avec l'annotation @Id.
À quoi sert l'annotation @Query sur une méthode de repository ?
À exécuter une requête JPQL appelée depuis un service Spring.
Quand une entité devient-elle persistante en Spring ?
Quand l'application appelle persist ou merge.
Que fait Spring Boot concernant les gestionnaires d'entités ?
Il automatise leur création.
Quelle méthode lance une requête dans un test REST avec MockMvc ?
La méthode mvc.perform lance la requête.
Que désigne jsonPath("$[0].name") dans un test JSON ?
La propriété 'name' du premier élément du tableau JSON.
Quel est le rôle de @ParameterizedTest avec @MethodSource en JUnit ?
Exécuter le même test pour chaque donnée fournie par la méthode source.
Combien d’exécutions produit le produit cartésien de deux animaux et deux formats d’entrée ?
Quatre exécutions.
Quels aspects doivent vérifier les tests REST ?
Le fonctionnement nominal, les formats d’entrée, les réponses, les requêtes malformées, les injections, l’authentification, la performance et la montée en charge.
Comment autoriser l'accès sans authentification à /api/public/** en Spring Security ?
En utilisant permitAll pour ces routes.
Quel est le rôle de JSESSIONID dans une session ?
C'est l'identifiant confidentiel de session envoyé dans un cookie.
Que fait le serveur après authentification concernant la session ?
Il renvoie l'identifiant JSESSIONID au client.
Comment le client utilise-t-il JSESSIONID après authentification ?
Il renvoie JSESSIONID dans ses requêtes privées.
Comment doivent être transmis les mots de passe selon la règle ?
Dans le body d'un POST via HTTPS.
Comment les mots de passe sont-ils stockés côté back-end ?
Sous forme de hash, avec bcrypt dans l'exemple.
Quelle différence principale existe entre OAuth 2.0 et un système d'authentification ?
OAuth 2.0 délègue l'autorisation, l'authentification vérifie l'identité.
En quoi consiste le contrôle d’accès à une donnée avec Principal ?
Récupérer l’identité avec Principal, transmettre son login au service et vérifier l’appartenance de l’objet.
Que permet l’API1 Broken Object Level Authorization à Alice ?
D’accéder à une commande appartenant à Bob si le serveur ne vérifie pas le propriétaire.
Comment corriger API2 Broken Authentication ?
En exigeant une session authentifiée pour l’endpoint.
Que produit l’absence de session valide dans API2 Broken Authentication ?
Une réponse 401 Unauthorized.
Comment corriger API3 Broken Object Property Level Authorization ?
Avec un DTO contrôlé qui accepte seulement les propriétés modifiables.
Quelle correction impose API4 Unrestricted Resource Consumption ?
Imposer une pagination et des limites serveur pour limiter la consommation.
Comment corriger API5 Broken Function Level Authorization ?
En exigeant le rôle nécessaire, par exemple ADMIN avec @PreAuthorize.
Quelle réponse renvoie un utilisateur standard sans rôle ADMIN dans API5 ?
403 Forbidden.
Teste tes connaissances avec un QCM de 59 questions sur Architectures logicielles avancées.
1. Quelle distinction décrit correctement une page Web et une application Web ?
2. Quelle partie d’une application Web correspond à l’interface graphique avec laquelle l’utilisateur interagit ?
Révisez le cours complet dans la fiche de révision de Architectures logicielles avancées.
Voir la fiche →Importe ton cours et l'IA génère des flashcards en 30 secondes.
Générateur de flashcards