Flashcards : Architectures logicielles avancées — 81 cartes

Toutes les cartes

1Question

Quelle différence principale existe entre une page Web et une application Web ?

Réponse

Une page Web est statique, une application Web est un logiciel accessible par Internet.

2Question

Qu'est-ce que le front-end dans une application Web ?

Réponse

La partie graphique côté client avec laquelle l'utilisateur interagit.

3Question

Qu'est-ce que le back-end dans une application Web ?

Réponse

La partie serveur qui fournit des services Web au front-end.

4Question

Quels objectifs un backend moderne cherche-t-il à atteindre ?

Réponse

La simplicité, maintenabilité, abstraction, extensibilité, réutilisation, optimisation, modularité, séparation, bonne API, passage à l'échelle et fiabilité.

5Question

Quels outils sont recommandés pour le développement backend dans ce cours ?

Réponse

Java 21, Maven 3, IntelliJ ou Visual Studio Code, Swagger Editor et GitLab.

6Question

Qu'est-ce que REST en architecture logicielle ?

Réponse

REST est un style d’architecture défini en 2000.

7Question

Quels principes fondateurs caractérisent REST ?

Réponse

La séparation client-serveur, l’absence d’état, la mise en cache et une interface uniforme.

8Question

En quoi une requête REST diffère-t-elle d'une requête HTTP classique ?

Réponse

Une requête REST organise une ressource, une action, des données d’entrée et une réponse.

9Question

Qu'est-ce qu'une ressource REST ?

Réponse

Un objet back-end identifié par une partie d’URI définissant des routes REST.

10Question

Comment s'identifie une route REST ?

Réponse

Par le couple unique verbe HTTP et URI.

11Question

Pourquoi POST foo/bar et GET foo/bar ne sont-ils pas en conflit ?

Réponse

Parce qu'ils ont des verbes HTTP différents.

12Question

Quels verbes REST principaux correspondent à créer, lire, supprimer, remplacer et modifier ?

Réponse

POST crée, GET lit, DELETE supprime, PUT remplace, PATCH modifie.

13Question

Quelle version de Spring Boot utilise l'écosystème JAX-RS ?

Réponse

Spring Boot 3 utilise l'écosystème JAX-RS.

14Question

Quelle version de Spring Boot est utilisée avec Java 21 et Maven dans ce cours ?

Réponse

Spring Boot 3.4.1 est utilisée avec Java 21 et Maven.

15Question

Comment créer une ressource REST avec Spring Boot ?

Réponse

Il faut créer une classe annotée avec @RestController et définir l'URI avec @RequestMapping.

16Question

Que définit @GetMapping(path = "world", produces = MediaType.TEXT_PLAIN_VALUE) ?

Réponse

Une route GET avec l'URI "world" et une réponse en texte brut.

17Question

Quelle est la fonction principale d'une route POST en REST ?

Réponse

Placer la donnée à créer dans le corps de la requête.

18Question

À quoi sert une route GET en REST ?

Réponse

À récupérer des données en lecture seule.

19Question

Quelle différence y a-t-il entre PATCH et PUT concernant les attributs absents du JSON ?

Réponse

Avec PATCH, les attributs absents ne sont pas définis et restent inchangés, avec PUT l'objet complet remplace l'objet ciblé.

20Question

Où les données d'une requête REST peuvent-elles être transmises ?

Réponse

Dans le corps HTTP, dans l'URI de la route ou dans les paramètres de l'URI.

21Question

Quelles sont les différences principales entre le body et l'URI pour transmettre des données ?

Réponse

Le body transmet des données complexes et moins exposées, l'URI est simple mais affiche les données en clair.

22Question

Une requête REST reçoit-elle toujours une réponse HTTP ?

Réponse

Oui, même si la méthode Java retourne void.

23Question

Que peut contenir une réponse HTTP à une requête REST ?

Réponse

Un code, des données et un message.

24Question

Quels codes HTTP sont présentés comme exemples ?

Réponse

200 OK, 204 No Content, 400 Bad Request, 404 Not Found, 405 Method Not Allowed et 500 Internal Server Error.

25Question

Quelle règle doit suivre une API REST concernant les codes HTTP ?

Réponse

Elle doit utiliser des codes HTTP adaptés, pas systématiquement le code 500 en cas d'erreur applicative.

26Question

Quels mécanismes sont recommandés pour gérer les codes HTTP dans une API REST ?

Réponse

Utiliser ResponseEntity ou ResponseStatusException.

27Question

Qu'est-ce qu'un DTO en programmation ?

Réponse

Une classe dédiée représentant uniquement les attributs à transférer entre back-end et client.

28Question

Pourquoi éviter de retourner un objet User avec l'attribut pwd ?

Réponse

Cela peut exposer le mot de passe confidentiel.

29Question

Quelle différence entre marshalling et démarshalling ?

Réponse

Le marshalling transforme un objet en format transmissible, le démarshalling fait l'inverse.

30Question

Comment Spring gère-t-il le marshalling JSON ?

Réponse

Spring utilise nativement Jackson pour le marshalling JSON.

31Question

Que faut-il ajouter pour le marshalling XML avec Spring ?

Réponse

Il faut ajouter la dépendance jackson-dataformat-xml.

32Question

Quel rôle joue @JsonTypeInfo dans le marshalling d'une interface Animal ?

Réponse

Il ajoute un attribut type au JSON.

33Question

Quel est le rôle de @JsonSubTypes dans le marshalling ?

Réponse

Il indique les classes concrètes utilisables lors du démarshalling.

34Question

Qu'est-ce qu'OpenAPI permet de faire avant l'implémentation d'une API REST ?

Réponse

OpenAPI permet de modéliser et décrire une API REST.

35Question

Que peut générer OpenAPI après la modélisation d'une API ?

Réponse

OpenAPI peut générer un squelette de code back-end et des tests.

36Question

Dans quels formats peut-on écrire une spécification OpenAPI ?

Réponse

En YAML ou en JSON.

37Question

Quel outil est utilisé dans le cours pour modifier une spécification OpenAPI en YAML ?

Réponse

Swagger Editor.

38Question

Quels éléments décrivent une route dans OpenAPI sous paths ?

Réponse

Une URI, un verbe, des paramètres, une requête, des réponses HTTP et le schéma du contenu.

39Question

Quelle différence principale existe entre une API orientée CRUD et une API orientée application ?

Réponse

L'API CRUD utilise des routes génériques, l'API application adapte les routes aux besoins du front-end.

40Question

Pourquoi la route /albumsSummary est-elle un exemple de route orientée application ?

Réponse

Parce qu'elle fournit des données optimisées pour l'affichage résumé des albums.

41Question

Qu'est-ce qu'un service en Spring ?

Réponse

Une classe annotée avec @Service dédiée à certains services utilisables par injection.

42Question

Que sépare la séparation des préoccupations en architecture Spring ?

Réponse

Les routes sont gérées par le contrôleur et la logique métier par un service.

43Question

Qu'est-ce que le mapping objet-relationnel (ORM) ?

Réponse

Une intégration convertissant attributs d'objets en valeurs stockables et inversement.

44Question

Quelle API d'ORM est utilisée avec Spring Boot dans ce cours ?

Réponse

JPA, ou Jakarta Persistence API.

45Question

Quelle annotation doit avoir une classe pour être stockée en base avec une clé primaire ?

Réponse

@Entity pour la classe et @Id pour la clé primaire.

46Question

Quel est le rôle de l'annotation @GeneratedValue ?

Réponse

Initialiser et incrémenter automatiquement un identifiant.

47Question

Quelles stratégies l'annotation @GeneratedValue peut-elle utiliser ?

Réponse

AUTO, SEQUENCE, IDENTITY, TABLE et UUID.

48Question

Pourquoi JPA nécessite-t-il des annotations explicites pour les relations entre objets ?

Réponse

Il ne peut pas déduire automatiquement les relations entre références Java.

49Question

Qu'impose l'annotation @Id en JPA ?

Réponse

Elle définit l'attribut clé primaire de l'entité.

50Question

Quelles sont les stratégies de génération d'identifiant en JPA ?

Réponse

AUTO, SEQUENCE, IDENTITY, TABLE et UUID.

51Question

Que permet l'annotation @EmbeddedId ?

Réponse

D'utiliser une clé primaire composée d'un attribut intégrable.

52Question

Comment se déclare une relation un-à-plusieurs en JPA ?

Réponse

Avec @OneToMany(mappedBy = "list") côté TodoList.

53Question

Comment se déclare une relation plusieurs-à-un en JPA ?

Réponse

Avec @ManyToOne côté Todo.

54Question

Quelle différence y a-t-il entre FetchType.LAZY et EAGER ?

Réponse

LAZY charge les données à la demande, EAGER toujours.

55Question

Quels sont les modes de mapping d'héritage en JPA ?

Réponse

SINGLE_TABLE, TABLE_PER_CLASS et JOINED.

56Question

Qu'est-ce que CrudRepository définit en Spring ?

Réponse

Un repository CRUD pour un type d'objet et une clé donnés.

57Question

Quelles sont les opérations de base d'un repository Spring ?

Réponse

save, delete, findById et findAll.

58Question

Que doit déclarer une entité pour que le repository identifie sa clé ?

Réponse

Son attribut de clé avec l'annotation @Id.

59Question

À quoi sert l'annotation @Query sur une méthode de repository ?

Réponse

À exécuter une requête JPQL appelée depuis un service Spring.

60Question

Quand une entité devient-elle persistante en Spring ?

Réponse

Quand l'application appelle persist ou merge.

61Question

Que fait Spring Boot concernant les gestionnaires d'entités ?

Réponse

Il automatise leur création.

62Question

Quelle méthode lance une requête dans un test REST avec MockMvc ?

Réponse

La méthode mvc.perform lance la requête.

63Question

Que désigne jsonPath("$[0].name") dans un test JSON ?

Réponse

La propriété 'name' du premier élément du tableau JSON.

64Question

Quel est le rôle de @ParameterizedTest avec @MethodSource en JUnit ?

Réponse

Exécuter le même test pour chaque donnée fournie par la méthode source.

65Question

Combien d’exécutions produit le produit cartésien de deux animaux et deux formats d’entrée ?

Réponse

Quatre exécutions.

66Question

Quels aspects doivent vérifier les tests REST ?

Réponse

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.

67Question

Comment autoriser l'accès sans authentification à /api/public/** en Spring Security ?

Réponse

En utilisant permitAll pour ces routes.

68Question

Quel est le rôle de JSESSIONID dans une session ?

Réponse

C'est l'identifiant confidentiel de session envoyé dans un cookie.

69Question

Que fait le serveur après authentification concernant la session ?

Réponse

Il renvoie l'identifiant JSESSIONID au client.

70Question

Comment le client utilise-t-il JSESSIONID après authentification ?

Réponse

Il renvoie JSESSIONID dans ses requêtes privées.

71Question

Comment doivent être transmis les mots de passe selon la règle ?

Réponse

Dans le body d'un POST via HTTPS.

72Question

Comment les mots de passe sont-ils stockés côté back-end ?

Réponse

Sous forme de hash, avec bcrypt dans l'exemple.

73Question

Quelle différence principale existe entre OAuth 2.0 et un système d'authentification ?

Réponse

OAuth 2.0 délègue l'autorisation, l'authentification vérifie l'identité.

74Question

En quoi consiste le contrôle d’accès à une donnée avec Principal ?

Réponse

Récupérer l’identité avec Principal, transmettre son login au service et vérifier l’appartenance de l’objet.

75Question

Que permet l’API1 Broken Object Level Authorization à Alice ?

Réponse

D’accéder à une commande appartenant à Bob si le serveur ne vérifie pas le propriétaire.

76Question

Comment corriger API2 Broken Authentication ?

Réponse

En exigeant une session authentifiée pour l’endpoint.

77Question

Que produit l’absence de session valide dans API2 Broken Authentication ?

Réponse

Une réponse 401 Unauthorized.

78Question

Comment corriger API3 Broken Object Property Level Authorization ?

Réponse

Avec un DTO contrôlé qui accepte seulement les propriétés modifiables.

79Question

Quelle correction impose API4 Unrestricted Resource Consumption ?

Réponse

Imposer une pagination et des limites serveur pour limiter la consommation.

80Question

Comment corriger API5 Broken Function Level Authorization ?

Réponse

En exigeant le rôle nécessaire, par exemple ADMIN avec @PreAuthorize.

81Question

Quelle réponse renvoie un utilisateur standard sans rôle ADMIN dans API5 ?

Réponse

403 Forbidden.

Teste-toi avec le QCM

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 ?

Faire le QCM →

Consultez la fiche

Révisez le cours complet dans la fiche de révision de Architectures logicielles avancées.

Voir la fiche →

Cours similaires

Crée tes propres flashcards

Importe ton cours et l'IA génère des flashcards en 30 secondes.

Générateur de flashcards