﻿1
00:00:01,330 --> 00:00:02,860
‫Instructeur : Une autre

2
00:00:02,860 --> 00:00:04,910
‫petite fonctionnalité intéressante que nous pouvons ajouter

3
00:00:04,910 --> 00:00:08,070
‫à une API est de fournir une route d'alias à une

4
00:00:08,070 --> 00:00:09,660
‫requête qui peut être très populaire,

5
00:00:09,660 --> 00:00:11,963
‫elle peut donc être demandée tout le temps.

6
00:00:13,400 --> 00:00:15,260
‫Et, par exemple, nous

7
00:00:15,260 --> 00:00:17,790
‫pourrions vouloir fournir un itinéraire spécifiquement pour

8
00:00:17,790 --> 00:00:20,203
‫les cinq meilleurs circuits bon marché.

9
00:00:21,324 --> 00:00:23,530
‫Donc, si nous utilisions notre itinéraire habituel

10
00:00:23,530 --> 00:00:25,530
‫ici avec les filtres et avec

11
00:00:25,530 --> 00:00:26,580
‫toutes les fonctionnalités

12
00:00:26,580 --> 00:00:29,930
‫que nous avons déjà, la demande ressemblerait un peu à ceci.

13
00:00:29,930 --> 00:00:32,090
‫Alors, débarrassons-nous de tout cela.

14
00:00:32,090 --> 00:00:34,510
‫Donc, les cinq meilleurs circuits et les moins chers.

15
00:00:34,510 --> 00:00:37,340
‫Donc, cela signifie que nous avons une limite de

16
00:00:39,495 --> 00:00:42,663
‫cinq et ensuite nous allons trier par notes et par prix.

17
00:00:44,300 --> 00:00:47,640
‫Donc, triez puis la note moyenne,

18
00:00:47,640 --> 00:00:52,640
‫et par ordre décroissant, donc moins les notes moyennes.

19
00:00:54,110 --> 00:00:56,750
‫Et, s'ils ont la même moyenne, alors nous

20
00:00:56,750 --> 00:00:59,270
‫voulons le prix le moins cher possible.

21
00:00:59,270 --> 00:01:02,353
‫Et donc, on va trier aussi par prix.

22
00:01:03,610 --> 00:01:06,060
‫Voyons rapidement les résultats.

23
00:01:06,060 --> 00:01:08,163
‫Et, en effet, nous avons cinq visites ici.

24
00:01:09,670 --> 00:01:12,560
‫Et, Postman fait à nouveau ce défilement.

25
00:01:12,560 --> 00:01:18,640
‫Donc, nous avons des visites avec 4. 9, 4.

26
00:01:18,640 --> 00:01:18,640
‫9, 4.

27
00:01:18,640 --> 00:01:20,553
‫9 encore, 4. 8 et 4. 7.

28
00:01:22,250 --> 00:01:27,060
‫Et donc, ce sont en fait nos cinq meilleurs circuits et les moins chers.

29
00:01:27,060 --> 00:01:29,150
‫Si nous disions le moins cher et

30
00:01:29,150 --> 00:01:32,270
‫le meilleur, eh bien, nous devrions peut-être d'abord trier par prix, car

31
00:01:32,270 --> 00:01:34,580
‫certains d'entre eux ne sont pas vraiment bon marché.

32
00:01:34,580 --> 00:01:36,320
‫Par exemple, celui-ci.

33
00:01:36,320 --> 00:01:40,180
‫Mais, nous avons sélectionné, d'abord, la moyenne.

34
00:01:40,180 --> 00:01:43,160
‫Et donc, nous avons d'abord trié par la moyenne la

35
00:01:43,160 --> 00:01:46,700
‫plus élevée et, ensuite seulement en cas d'égalité, en gros, seulement ensuite,

36
00:01:46,700 --> 00:01:47,900
‫par le prix.

37
00:01:49,120 --> 00:01:51,340
‫Maintenant, disons qu'il s'agit d'une requête qui

38
00:01:51,340 --> 00:01:53,350
‫se fait tout le temps et

39
00:01:53,350 --> 00:01:55,060
‫que nous souhaitons proposer un

40
00:01:55,060 --> 00:01:57,453
‫itinéraire simple et facile à mémoriser pour l'utilisateur.

41
00:01:58,670 --> 00:02:02,110
‫Alors, allons à notre application et essayons de l'implémenter.

42
00:02:02,110 --> 00:02:06,330
‫Et nous allons commencer par leurs itinéraires, alors faites le tour du routeur.

43
00:02:06,330 --> 00:02:08,703
‫Et, nous devons ensuite créer un nouvel itinéraire.

44
00:02:09,550 --> 00:02:12,390
‫Et, faisons-le ici, tout en haut.

45
00:02:12,390 --> 00:02:16,913
‫Alors, routeur. route.

46
00:02:18,650 --> 00:02:21,370
‫Et alors, comment allons-nous appeler cette route?

47
00:02:21,370 --> 00:02:25,293
‫Eh bien, disons top-5 bon marché.

48
00:02:26,590 --> 00:02:30,010
‫Donc, un nom assez simple, mais ça va marcher.

49
00:02:30,010 --> 00:02:31,810
‫Et puis, en fait, nous

50
00:02:31,810 --> 00:02:34,103
‫voulons uniquement obtenir des demandes pour cette route.

51
00:02:35,170 --> 00:02:37,480
‫Et donc, maintenant il est temps de réfléchir.

52
00:02:37,480 --> 00:02:41,370
‫Comment allons-nous implémenter cette fonctionnalité ?

53
00:02:41,370 --> 00:02:43,530
‫Eh bien, en substance, ce

54
00:02:43,530 --> 00:02:47,273
‫que nous voulons, c'est d'avoir toujours toutes les tournées comme ici.

55
00:02:48,210 --> 00:02:51,070
‫Et donc, laissez-moi aller de l'avant et commencer par

56
00:02:51,070 --> 00:02:52,930
‫copier et coller cela ici.

57
00:02:52,930 --> 00:02:56,320
‫Donc, nous voulons vraiment toujours utiliser cette fonction ici car cela

58
00:02:56,320 --> 00:02:57,740
‫n'a pas vraiment de

59
00:02:57,740 --> 00:03:00,900
‫sens de réécrire toute la logique qui s'y trouve.

60
00:03:00,900 --> 00:03:04,010
‫Mais, avant de pouvoir appeler cet ender de route, nous

61
00:03:04,010 --> 00:03:06,690
‫voulons essentiellement préremplir certains des champs de la

62
00:03:06,690 --> 00:03:07,833
‫chaîne de requête.

63
00:03:08,970 --> 00:03:10,340
‫Ainsi, nous savons

64
00:03:10,340 --> 00:03:13,590
‫déjà que notre chaîne de requête devrait ressembler à ceci.

65
00:03:13,590 --> 00:03:16,370
‫Et, en fait, nous pouvons ajouter plus de choses ici.

66
00:03:16,370 --> 00:03:18,070
‫Mais, en substance, notre chaîne

67
00:03:18,070 --> 00:03:19,970
‫de requête doit ressembler à ceci.

68
00:03:19,970 --> 00:03:23,100
‫Et donc, la solution va être d'exécuter un

69
00:03:23,100 --> 00:03:26,163
‫middleware avant d'exécuter réellement ce gestionnaire getAllTours.

70
00:03:27,080 --> 00:03:28,760
‫Et donc, cette fonction

71
00:03:28,760 --> 00:03:31,843
‫middleware va ensuite manipuler l'objet de requête qui arrive.

72
00:03:33,010 --> 00:03:35,210
‫Et donc, c'est encore un

73
00:03:35,210 --> 00:03:38,150
‫autre très bel exemple d'utilisation de middleware, car

74
00:03:38,150 --> 00:03:41,100
‫vous devez vraiment vous familiariser et vous habituer

75
00:03:41,100 --> 00:03:44,150
‫à ce concept d'utilisation stratégique de middleware afin de

76
00:03:44,150 --> 00:03:47,123
‫modifier l'objet de la demande selon nos besoins.

77
00:03:48,690 --> 00:03:52,100
‫Alors, ajoutons-le ici alors.

78
00:03:52,100 --> 00:03:53,920
‫Alors, tourController.

79
00:03:53,920 --> 00:03:55,150
‫Et puis,

80
00:03:55,150 --> 00:03:57,630
‫la fonction middleware que nous allons créer

81
00:03:57,630 --> 00:03:59,733
‫dans une seconde, qui s'appellera aliasTopTours.

82
00:04:05,060 --> 00:04:08,820
‫Alors, copions ce nom, passons au tourController et je

83
00:04:08,820 --> 00:04:11,843
‫vais le mettre ici tout en haut.

84
00:04:14,100 --> 00:04:15,217
‫Donc, les exportations. puis demande, réponse, et

85
00:04:17,370 --> 00:04:19,823
‫quel est le troisième argument dont nous avons besoin

86
00:04:21,650 --> 00:04:22,600
‫dans le

87
00:04:22,600 --> 00:04:24,030
‫middleware, vous vous souvenez ?

88
00:04:24,030 --> 00:04:27,180
‫Et, je sais que la section Express est déjà assez

89
00:04:27,180 --> 00:04:30,700
‫éloignée à ce stade, mais j'espère que vous vous souviendrez que le

90
00:04:30,700 --> 00:04:33,280
‫troisième argument ici doit être le suivant.

91
00:04:33,280 --> 00:04:36,230
‫Donc, pour appeler le prochain middleware qui se

92
00:04:36,230 --> 00:04:38,970
‫trouve dans la pile de middleware.

93
00:04:38,970 --> 00:04:40,520
‫Donnez-lui une sauvegarde.

94
00:04:45,600 --> 00:04:46,640
‫Et donc, cette erreur là devrait disparaître.

95
00:04:46,640 --> 00:04:49,203
‫Et donc, faisons ce que nous avons dit que nous ferions.

96
00:04:53,554 --> 00:04:55,950
‫Donc, essentiellement pour manipuler l'objet

97
00:04:55,950 --> 00:04:58,870
‫de requête de sorte que lorsqu'il atteint

98
00:04:58,870 --> 00:05:01,960
‫le gestionnaire getAllTours, il soit déjà différent.

99
00:05:01,960 --> 00:05:03,423
‫Alors, commençons par le

100
00:05:04,270 --> 00:05:07,160
‫faire, puis regardons vraiment ce qui se passe.

101
00:05:07,160 --> 00:05:08,783
‫Alors, rappelez-vous, la limite sera fixée à cinq.

102
00:05:10,010 --> 00:05:13,280
‫Et, rappelez-vous que tout est des chaînes ici et donc je

103
00:05:13,280 --> 00:05:15,320
‫le règle également sur une chaîne.

104
00:05:15,320 --> 00:05:17,370
‫Maintenant, qu'avons-nous eu d'autre ?

105
00:05:19,350 --> 00:05:20,703
‫Donc, nous avons

106
00:05:21,580 --> 00:05:25,200
‫ce genre, alors copions simplement ceci ici et disons req. mettre en doute. sorte.

107
00:05:26,400 --> 00:05:30,623
‫Ça devrait être ça.

108
00:05:32,247 --> 00:05:35,050
‫Et puis, nous pouvons également

109
00:05:35,050 --> 00:05:39,230
‫spécifier certains champs afin que l'utilisateur n'obtienne pas tous

110
00:05:39,230 --> 00:05:42,560
‫les champs que nous avons là-dedans.

111
00:05:42,560 --> 00:05:43,660
‫Donc, disons

112
00:05:46,420 --> 00:05:49,033
‫que nous voulons seulement le nom, le prix,

113
00:05:50,070 --> 00:05:52,973
‫la moyenne des notes, le résumé et la difficulté.

114
00:05:54,570 --> 00:05:55,653
‫Sauvegardez-le et maintenant

115
00:05:58,650 --> 00:06:02,600
‫tout ce dont nous avons besoin est le suivant, sinon ce middleware sera

116
00:06:02,600 --> 00:06:05,730
‫bloqué ici pour toujours et ne pourra pas continuer.

117
00:06:05,730 --> 00:06:07,043
‫Voyons maintenant un peu

118
00:06:08,440 --> 00:06:10,420
‫mieux ce qui va réellement se passer ici.

119
00:06:10,420 --> 00:06:12,690
‫Donc, dès que quelqu'un atteint

120
00:06:12,690 --> 00:06:16,900
‫le top 5 des itinéraires les moins chers, nous commencerons.

121
00:06:16,900 --> 00:06:17,733
‫Le premier middleware qui va être exécuté est aliasTopTours.

122
00:06:17,733 --> 00:06:21,470
‫Donc, la fonction que nous venons de créer.

123
00:06:21,470 --> 00:06:23,433
‫Donc, ce que cela va faire,

124
00:06:25,420 --> 00:06:27,060
‫c'est définir ces propriétés de

125
00:06:27,060 --> 00:06:30,070
‫l'objet de requête sur ces valeurs que nous avons spécifiées ici.

126
00:06:30,070 --> 00:06:32,490
‫Fondamentalement, préremplir des parties de

127
00:06:32,490 --> 00:06:35,800
‫l'objet de requête avant d'atteindre le gestionnaire getAllTours.

128
00:06:35,800 --> 00:06:39,453
‫Et donc, dès que nous arrivons à cette fonction, l'objet

129
00:06:40,720 --> 00:06:43,670
‫de requête est déjà pré-rempli, même si l'utilisateur

130
00:06:43,670 --> 00:06:46,080
‫n'a mis aucun de ces paramètres dans

131
00:06:46,080 --> 00:06:47,960
‫la chaîne de requête.

132
00:06:47,960 --> 00:06:49,963
‫Et donc, en substance, ce que nous

133
00:06:51,230 --> 00:06:52,170
‫faisons ici

134
00:06:52,170 --> 00:06:55,137
‫est de préremplir la chaîne de requête pour l'utilisateur afin

135
00:06:55,137 --> 00:06:57,650
‫que l'utilisateur n'ait pas à le faire lui-même.

136
00:06:57,650 --> 00:06:59,083
‫Et donc, allons-y maintenant et essayons ceci.

137
00:07:01,024 --> 00:07:03,683
‫Alors, je copie ça.

138
00:07:04,780 --> 00:07:06,003
‫Et, ici, ce ne sont pas des tournées.

139
00:07:09,380 --> 00:07:11,090
‫C'est le top 5 des circuits.

140
00:07:11,090 --> 00:07:14,463
‫Whoa, qu'est-ce qui se passe ici?

141
00:07:16,710 --> 00:07:18,620
‫Pour une raison quelconque, il

142
00:07:18,620 --> 00:07:21,960
‫ne trouve pas cet itinéraire, alors revenons en arrière.

143
00:07:21,960 --> 00:07:23,360
‫Donc, top-5 des circuits.

144
00:07:23,360 --> 00:07:25,013
‫Et donc, ici dans la route, ah, d'accord.

145
00:07:26,140 --> 00:07:28,720
‫C'est ce qu'on appelle le top-5 bon

146
00:07:28,720 --> 00:07:30,690
‫marché, donc mon erreur ici.

147
00:07:30,690 --> 00:07:32,093
‫Alors, pas cher, envoyez-le

148
00:07:33,440 --> 00:07:35,780
‫maintenant, et ce n'est toujours pas correct.

149
00:07:35,780 --> 00:07:38,123
‫Ah ouais.

150
00:07:40,030 --> 00:07:41,110
‫Bien sûr, je dois encore mettre les tournées ici, bien sûr.

151
00:07:41,110 --> 00:07:46,110
‫Donc, nous sommes dans la ressource de visites et tout le routeur est

152
00:07:46,140 --> 00:07:48,300
‫monté sur cet itinéraire de

153
00:07:48,300 --> 00:07:50,210
‫visites, souvenez-vous de cela.

154
00:07:50,210 --> 00:07:53,670
‫Et donc, c'est dans ces circuits, ce genre de mini application,

155
00:07:53,670 --> 00:07:55,430
‫rappelez-vous ça, que j'ai

156
00:07:55,430 --> 00:07:58,140
‫créé ce top 5 des itinéraires pas chers.

157
00:07:58,140 --> 00:08:00,723
‫Alors, espérons que cela fonctionne maintenant.

158
00:08:01,790 --> 00:08:03,470
‫Et, en effet, il le fait.

159
00:08:03,470 --> 00:08:04,703
‫Donc, ça a marché, c'est fantastique.

160
00:08:07,350 --> 00:08:11,030
‫Maintenant, bien sûr, nous pourrions faire beaucoup plus

161
00:08:11,030 --> 00:08:15,090
‫de routes d'alias ici, mais ce n'est pas vraiment nécessaire.

162
00:08:15,090 --> 00:08:16,740
‫Je voulais juste vous montrer

163
00:08:16,740 --> 00:08:19,400
‫le concept, vous montrer que cela peut être une

164
00:08:19,400 --> 00:08:21,630
‫fonctionnalité intéressante à ajouter à n'importe quelle API

165
00:08:21,630 --> 00:08:25,380
‫et je voulais aussi, encore une fois, vous montrer la puissance des middlewares.

166
00:08:25,380 --> 00:08:27,933
‫Donc, nous parlons ici de Mongoose, mais il est

167
00:08:29,160 --> 00:08:30,950
‫quand même très important de continuer

168
00:08:30,950 --> 00:08:34,360
‫à se familiariser avec les concepts Express dont nous avons parlé précédemment.

169
00:08:34,360 --> 00:08:37,513
‫Quoi qu'il en soit, nous en avons maintenant terminé avec nos fonctionnalités API.

170
00:08:39,040 --> 00:08:42,120
‫Dans la vidéo suivante, nous allons simplement refactoriser

171
00:08:42,120 --> 00:08:44,950
‫rapidement tout cela pour rendre l'ensemble

172
00:08:44,950 --> 00:08:48,690
‫du code un peu plus modulaire et, bien sûr, meilleur.

