Transcription
1. Introduction du cours: Bienvenue dans le quatrième module
du cours Express JS, BilRSTful APIs Ce cours s'inscrit dans la continuité de la série de cours Express JS. Je m'appelle Shan Ragunci et je serai votre guide dans ce
voyage passionnant Fort de nombreuses années d'expérience API
évolutives et de systèmes en temps
réel, je suis là pour vous aider à
maîtriser l'art de
créer des API RESTful
avec Express JS Dans ce module, nous
aborderons tout. Vous devez créer des API RESTful modernes
et efficaces. Cela inclut la conception de services
RESTful et la création de votre premier serveur
Express S. En utilisant des outils tels que
Normon pour rationaliser le développement et des agents de poste
pour tester vos ABI, sécurisant votre application avec variables d'
environnement
et en validant entrées pour garantir sa sécurité, en gérant les méthodes SCTP
telles que get post, put et delete pour
interagir avec les données, et en maîtrisant le routage dynamique pour rendre Cette classe est parfaite pour les développeurs ayant une
connaissance de base de node JS. Vous souhaitez passer à l'étape suivante
dans le développement d'API. Si vous avez toujours eu envie créer vos propres services de
backend, ce module vous montrera
exactement comment procéder À la fin de ce module, vous aurez les
compétences nécessaires pour concevoir et créer des API
RESTful sécurisées, évolutives et prêtes
pour la production Il s'agit de compétences essentielles
pour les développeurs de backend et d'une étape essentielle pour
devenir un expert du full stack Enfin, notre projet pratique vous guidera dans la
création d'une API entièrement fonctionnelle et
reposante à partir de zéro Vous allez créer des itinéraires
pour gérer les demandes get, post, put et delete, sécuriser votre application avec des variables d'
environnement et valider les entrées pour
garantir la fiabilité. Je suis très heureuse de vous aider à créer des API
puissantes et évolutives avec Express JS. Plongeons-nous dans le vif du sujet et commençons. Rendez-vous à la première conférence.
2. Aperçu de cette section: I Donc, plus tôt dans la section deux, où nous avons parlé du système de modules
nodaux, vous avez découvert
ce module STDP Nous l'utilisons pour créer un
serveur Web qui écoute sur le port 3 000 et répond aux
demandes adressées à ces points de terminaison Donc, les cours root ou API. Bien que cette approche
soit parfaitement adaptée,
elle n'est pas idéale pour créer une application complexe, car dans une application complexe de grande taille, nous pouvons avoir différents points de terminaison, et nous ne voulons pas intégrer toutes ces instructions
dans cette fonction Dans cette section, nous
allons donc examiner Express, qui est un framework rapide et
léger pour créer des applications Web. Ensuite, nous allons
examiner les services RESTful.
3. Concevoir des services RESTful avec Express.js: Commençons cette section par une brève introduction
aux services Rest PL, également appelés API RestPL Si vous savez déjà
ce qu'est le repos, n'hésitez pas à sauter cette vidéo. Au
début du cours,
je vous ai donc présenté l'architecture
client-serveur. Ainsi, la plupart, sinon la totalité, des applications que nous utilisons aujourd'hui
suivent cette architecture. L'application elle-même est le client ou la partie
frontale située sous le capot. Il doit
communiquer avec le serveur ou le back-end pour obtenir
ou enregistrer les données. Cette communication s'effectue
à l'aide du protocole SDDV, le même protocole
qui alimente notre Web Ainsi, sur le serveur, nous
exposons un ensemble de services accessibles
via le protocole STTBP Le client peut
ensuite appeler directement ces services en
envoyant SttprQuest Maintenant, c'est là que le repos
entre en jeu. Rest est l'abréviation de
Representational State Transfer. Et je sais que cela
n'a probablement aucun sens pour vous car il a été introduit par un doctorant
dans le cadre de sa thèse. Mais la théorie mise à part, la
RST est essentiellement une convention pour créer
ces services SDDB Nous utilisons donc les principes simples du protocole
SGTPPtocol pour fournir une assistance lors de
la création, de la
lecture, de la mise à jour Nous appelons toutes ces opérations
des opérations grossières Explorons maintenant
cette convention l'aide d'un exemple PAL réel. Supposons que nous ayons
une société appelée Fair Wheels pour
la location de voitures. Nous avons une application client dans laquelle nous
gérons une liste de nos
clients sur le serveur. Nous devrions exposer le service
à un point de terminaison comme celui-ci. Fairwheels.com réduit donc les clients de l'
API
afin que le client puisse
envoyer SgtbrQuest afin que le client puisse
envoyer SgtbrQuest avec ce Maintenant, quelques informations sur ce
point de terminaison que vous devez savoir. Tout d'abord, l'adresse peut
commencer par SGDP ou HTTPS. Cela dépend de l'application
et de ses exigences. Si vous souhaitez que les données soient
échangées sur un canal sécurisé, vous devez utiliser les GDP. Ensuite, nous avons le
domaine de l'application. Ensuite, nous avons l'API. Ce n'est pas obligatoire, mais vous voyez que
de nombreuses entreprises suivent cette convention pour exposer
leurs services reposants. Ils incluent le mot API
quelque part dans l'adresse. Cela peut être après le domaine, ou il peut s'agir d'un sous-domaine
comme apfairwals.com Il n'y a pas de règle absolue. Ensuite, nous avons des clients, ce qui fait référence à
la collecte de clients dans notre application. Dans le reste du monde,
nous appelons cette partie une ressource. Nous pouvons exposer nos ressources
telles que les clients, les voitures, les locations sur
différents terminaux C'est donc notre point final pour
travailler avec les clients. Toutes les opérations relatives aux
clients, telles que la création d'un client
ou la mise à jour d'un client seraient effectuées en envoyant une requête STDB
à ce point de terminaison Le type de requête GTB détermine le type
d'opération Ainsi, chaque demande SGDP contient
ce que nous appelons un verbe ou une méthode qui détermine
son type ou son intention Voici les méthodes
HTTP standard. Nous avons obtenu pour obtenir des données, publier pour créer des données, mettre pour mettre à jour des données et supprimer pour supprimer des données. Explorons maintenant chacune d'entre
elles à l' aide de l'exemple de nos
clients. Pour obtenir la liste
de tous les clients, nous devons envoyer une
demande STD get à cette adresse Notez le nom pluriel des clients. Il indique ici une
liste de clients. Ainsi, lorsque nous envoyons une
requête STP get à ce point de terminaison, notre service devrait
nous envoyer quelque chose comme ceci Nous avons donc un ensemble
d'objets clients. Si nous voulons un seul client, nous devons inclure l'identifiant de
ce client dans l'adresse. Notre serveur répondrait alors avec un
objet client comme celui-ci. Maintenant, pour mettre à jour un client, nous devons envoyer une
requête StdpPut à ce Et notez qu'une fois encore,
nous spécifiez ici l'identifiant
du client à mettre à jour. Mais nous devons également inclure l'objet du client dans
le corps de la demande. Il s'agit donc d'une
représentation complète de l'objet client avec des propriétés
mises à jour. Nous l'envoyons au serveur, et le serveur met à jour
le client avec un identifiant donné en fonction
de ces valeurs. De même, pour supprimer un client, nous devons envoyer une
demande de suppression STDP à ce point de terminaison Mais ici, il n'est pas nécessaire d' inclure l'
objet client dans le corps de la demande, car il suffit d'un identifiant pour supprimer un
client. Enfin, pour
créer un client, nous devons envoyer une
StdpPostrQuest à Ce n'est pas le cas ici, car
nous ajoutons un nouveau client. Nous ne traitons pas avec
un client en particulier. Nous n'avons pas l'
identifiant dans l'adresse. Nous travaillons avec un
ensemble de clients. Nous ajoutons donc un nouveau
client à cette collection, et c'est pourquoi nous devons inclure l'objet client dans
le corps de la demande. Le serveur obtient cet objet et crée un client pour nous. Voici donc la convention
reposante. Nous exposons nos ressources,
telles que les clients, à l'aide d'une adresse simple et
significative et prenons en charge diverses opérations les concernant,
telles que leur création
ou leur mise à jour à l'aide des méthodes GTP standard Tout au long de cette section, vous
allez apprendre à utiliser le framework express pour créer le service RESTful de
gestion de la liste des clients Cependant, dans cette section, nous n'effectuerons
aucun travail sur les bases de données car cela ajouterait
de la complexité. nous concentrerons uniquement
sur le développement de services SDDP, et nous utiliserons un simple tableau en mémoire pour conserver la
liste de nos clients Plus tard dans le cours, nous
verrons comment utiliser une base de données.
4. Express.js : une introduction: Voici donc la citation que nous avons écrite dans la section
sur le noyau du nœud, où je vous
présente le module STDP Nous pouvons donc voir qu'avec le module STDP, nous pouvons créer un serveur Web Ici, nous avons une
fonction de rappel qui prend deux paramètres, la
requête et la réponse Et avec cet objet de requête, nous pouvons vérifier l'URL de
la demande entrante. Ainsi, nous pouvons définir différentes routes pour
notre application. Donc, si vous avez une
demande pour, disons, des bourses d'
API, voici comment nous allons
répondre au client Bien que cette approche fonctionne
certainement, elle n'est pas très maintenable
car à mesure que nous définissons de nouvelles routes
pour notre application, nous devons ajouter d'autres blocs I
dans cette fonction de rappel C'est alors qu'un cadre
entre en jeu. Un framework donne à notre
application une structure appropriée, ce qui nous permet d'ajouter facilement plus de routes tout en gardant code de
notre application maintenable Il existe maintenant différents
frameworks pour
créer des applications Web et des serveurs
Web au-dessus d'un nœud. Le plus populaire est Express. Donc, si vous allez sur tonpmjs.com, recherchons Express La version actuelle
est donc la version 4.18 0.2. Jetons un coup d'œil ici. Alors, sur le côté droit, regardez les statistiques. Il y a eu plus de 27
millions de téléchargements hebdomadaires. C'est un framework très populaire. Il est également très rapide, léger et
parfaitement documenté. Alors maintenant, de retour dans le terminal, créons un nouveau
dossier pour cette section. Je vais donc l'appeler
Express Themo. Maintenant, entrons dans ce dossier, lançons NPM dedans avec yes black Nous avons donc maintenant un package
JCNFle et enfin, nous pouvons installer Express Magnifique. Dans la prochaine conférence, je vais
vous montrer comment créer
votre premier serveur Web à l'aide d'Express.
5. Créer votre premier serveur Express.js: C'est bon. Maintenant, dans le code VS, ajoutons un nouveau fichier app dot js. Donc, dans ce fichier,
nous voulons d'abord charger le module
express. Nous utilisons donc la fonction requise, lui donnant le nom de notre
module, qui est express. Maintenant, cela renvoie une fonction. C'est ce que nous appelons l'express. D'accord. Nous devons maintenant appeler
cette fonction comme ceci. Et comme vous pouvez le voir, cela renvoie un objet
de type express. Par convention, nous
appelons cette application d'objets une application. Nous stockons donc le résultat
dans une application d'appel constant. Cela représente donc
notre application. Maintenant, cet objet d'application possède un
tas de méthodes utiles. Nous avons des méthodes comme t, post, put et delete. Toutes ces méthodes
correspondent à des verbes STDP ou à des méthodes STTP dont je vous ai parlé
plus haut dans Donc, si vous souhaitez gérer une demande de publication DDP
vers un point de terminaison, vous devez utiliser app point post Dans cette conférence,
nous voulons simplement
utiliser app point G. Nous voulons implémenter quelques
points de terminaison qui répondent
à une requête TDP Get Cette méthode prend donc
deux arguments. Le premier argument est
le chemin ou l'URL. Ici, je vais utiliser une barre oblique pour représenter la
racine du site Web Maintenant, le deuxième argument
est une fonction de rappel. Il s'agit d'une fonction qui
sera appelée lorsque nous aurons une StdpgrQuest vers D'accord, cette
fonction de rappel doit donc avoir deux arguments request
et response Cela passe donc à un bloc de code. Maintenant, cet
objet de requête possède un tas de propriétés
utiles qui
nous donnent des informations sur
la demande entrante. Si nous voulons en savoir plus sur
toutes ces propriétés, il est préférable de consulter la
documentation express , car
dans ce cours, nous n'utiliserons qu'une
poignée de ces propriétés. Rendez-vous donc sur
expresj.com en haut de la page,
regardez la version 4 de référence de l'API Maintenant, ici, vous pouvez voir
l'objet de la requête, et en dessous, vous pouvez voir toutes les propriétés qui
sont à votre disposition. Nous avons une URL de base, un corps pour lire le
corps de la demande, des cookies, un nouveau nom d'hôte, méthode
IP, une URL d'origine , des
paramètres, etc. Pour en revenir à notre code, lorsque nous recevons une
demande GDP get à la racine
de notre site Web, nous répondons
par un message Hello world. Répondez à CNN Bonjour WWW. Voici comment nous
définissons un itinéraire. Nous spécifiez le chemin ou l'
URL et une fonction de rappel
, également appelée gestionnaire
de route Enfin, nous devons
écouter sur un port donné. Nous appelons donc app point LICEN. Nous
lui donnons le numéro de port 3 000. Et éventuellement, nous
pouvons transmettre une fonction. Cela sera appelé
lorsque l'application commencera à écouter
sur le pot donné. Donc, encore une fois, nous utilisons la syntaxe de la fonction flèche pour afficher quelque chose
sur la console. Donc, la console Dot Log
écoute sur le port 3 000. Maintenant, revenez dans le terminal
node app point js. OK, nous écoutons
sur le port 3 000. Passons maintenant à Cron et passons au port hôte local 3 000 Voici donc notre message « Bonjour tout
le monde ». Définissons maintenant un autre itinéraire. Donc, encore une fois, nous
allons appeler app point cat. Maintenant, celui-ci va
être slash API slash CoorSS. Encore une fois, nous passons
la fonction avec deux arguments qui sont
request et response, et cela passe à un bloc de code. Maintenant, dans un scénario réel
, nous voulons obtenir la liste des
cours de la base de données
et les renvoyer. Mais comme je vous l'ai déjà dit, dans cette section, nous nous concentrons uniquement sur la création de
ces points de terminaison Nous n'allons pas travailler sur la base de données, je vais
donc simplement
renvoyer un tableau de nombres. Donc, la réponse envoyée passe
un tableau de numéros gratuits. À l'avenir, nous pourrons remplacer ces numéros par de
véritables objets de cours. Maintenant, de retour dans le terminal, nous devons arrêter ce
processus et le recommencer. Appuyez donc sur Ctrl et C. OK, encore
une fois,
notez, l'application part à la poursuite. Maintenant, revenons à Pro,
passons à slash APIs OSS. Écoutez, nous avons une série
de numéros gratuits. Magnifique. C'est donc que je veux que tu
fasses attention ici. Dans cette implémentation, nous
n'avons pas ces blocs I. Nous définissons de nouveaux itinéraires en
appelant l'application point get. Avec cette structure, au fur et à mesure que
notre application grandit, nous pouvons déplacer certaines de ces
routes vers différents fichiers. Par exemple, nous pouvons déplacer
tous les itinéraires liés aux cours vers un
fichier distinct tel que courses point JS. Express donne à notre application
un squelette, une structure.
6. Développement efficace avec Nodemon: Jusqu'à présent, vous avez remarqué que chaque fois que nous apportons
une modification à ce code, nous devons retourner dans
le terminal, arrêter ce processus et le recommencer. C'est très fastidieux. Je vais donc
vous montrer une meilleure solution. Nous allons installer un
package de nœuds appelé mode Nord
, abréviation de node monitor. Donc, dans le terminal, NPM installe G parce que nous voulons
l'installer globalement, afin de pouvoir l'exécuter n'importe où Et le nom du
package est Nord Mode. Comme je vous l'ai déjà dit,
si vous êtes sur Mac et que vous n'avez pas correctement configuré
les autorisations, vous devez mettre le
pseudo au premier plan. accord ?
Le mode Non est installé. Ainsi, au lieu d'exécuter notre application en utilisant
node, nous utilisons le mode node. OK ? Vous pouvez maintenant voir que Normon surveille tous
les fichiers de ce dossier, tous les fichiers avec des extensions Donc, si vous
revenez ici et que vous
apportez une simple modification
, puis que vous enregistrez le fichier. Maintenant, regardez, dans le terminal, Normon a redémarré notre application ou notre processus
à cause des modifications Nous n'avons donc plus besoin de le
faire manuellement. Maintenant, de retour dans le navigateur, si nous envoyons une demande à
la racine du site Web, nous pouvons voir notre nouveau
message affiché ici.
7. Sécuriser les configurations avec des variables d'environnement: Maintenant, une chose que nous
devons améliorer dans ce code est cette valeur
codée en dur pour le port. Nous avons donc utilisé 3 000
comme nombre arbitraire. Bien que cela puisse fonctionner sur
la machine de développement, il est
peu probable que cela fonctionne dans un environnement
de production. Parce que lorsque vous déployez
cette application un environnement d'hébergement, le port est
attribué dynamiquement par l'environnement
d'hébergement. Nous ne pouvons donc pas compter sur
3 000 personnes disponibles. Le moyen de résoudre ce problème est donc d'utiliser une variable d'
environnement. Généralement, dans les environnements d'hébergement
pour les applications de nœuds, nous avons cette
variable d'environnement appelée port. Une
variable d'environnement est essentiellement une variable qui fait partie de l'environnement dans
lequel un processus s'exécute. Sa valeur est définie en dehors de
cette application. Je vais vous montrer comment
cela fonctionne dans une seconde. Dans cette application,
nous devons donc lire la valeur de cette variable d'
environnement sportif. Et pour ce faire, nous utilisons
l'objet process. Nous avons cet
objet global appelé processus. Cet objet possède une
propriété appelée N
, abréviation de variables d'
environnement. Ensuite, nous ajoutons le nom de notre variable d'
environnement. Dans ce cas,
si cela est défini, nous
allons l'utiliser. Sinon, nous
allons en utiliser 3 000. Nous pouvons maintenant stocker le résultat
dans une constante appelée port. OK, supprimons ça. Enfin, nous devons
remplacer 3 000 par un port et modifier notre
message en conséquence. Je vais donc remplacer ce code
unique par backtick. Nous pouvons donc utiliser un
modèle littéral. Et ici, nous allons remplacer
3 000 par une valeur dynamique. Nous ajoutons donc de la Dosine, accolades
au curry, puis nous
ajoutons notre constante Maintenant, de retour dans le terminal, exécutons cette application
en mode Node. Donc, sur cette machine, vous pouvez voir que je n'ai pas de
variable d'environnement appelée port. C'est pourquoi 3 000 est utilisé comme
port pour le serveur Web. Je vais maintenant définir une variable d'
environnement. Arrêtons donc ce processus. Sur Mac, nous pouvons définir une variable d'environnement en
exécutant la commande d'exportation. Si nous sommes sous Windows, vous devez utiliser set in
command prompt et dollar et deux-points dans Power Shell. Maintenant, nous ajoutons le nom
de la
variable d'environnement dans ce cas, le port et définissons sa valeur. Je vais en utiliser 5 000. Nous avons donc maintenant cette variable d'
environnement appelée port avec une valeur de 5 000. Avec cela, nous exécutons
cette application,
Norman, vous pouvez voir que maintenant nous
écoutons sur le port 5 000. C'est donc la bonne méthode pour attribuer un port aux applications de votre
nœud. Vous devriez essayer de lire la valeur d'une
variable d'environnement appelée port. S'il existe une valeur,
vous devez l'utiliser. Sinon, utilisez un nombre
arbitraire pour votre machine de développement.
8. Routage dynamique avec des paramètres de route: Très bien, actuellement, nous avons un moyen d'obtenir
la liste des cours. Dans cette conférence,
je vais vous montrer comment créer un itinéraire
pour accéder à un seul cours. Ainsi, plus tôt dans cette section, où j'ai parlé des services
RESTful, vous apprenez que
pour accéder à un seul cours, nous devons inclure l'identifiant
du cours dans l'URL Le point de terminaison devrait donc être comme
celui-ci en CSS de l'API Slash. En supposant qu'il s'agit de
l'identifiant du cours. Voyons donc comment
implémenter un tel itinéraire. Donc, app point get, nous ajoutons le chemin qui est slash
API slash Courses Nous devons maintenant
définir un paramètre. Nous ajoutons donc une colonne et un identifiant. Cet ID est le nom
de notre paramètre. Ici, nous pourrions utiliser n'importe quoi. Il n'est pas nécessaire que ce soit une pièce d'identité. Il peut s'agir d'un identifiant de cours, mais l'identifiant est plus court et
plus conventionnel. Nous ajoutons maintenant notre fonction de
gestionnaire d'itinéraires. La demande et la réponse vont donc à. Maintenant, pour lire
ce paramètre, nous utilisons request point forms point ID. Donc, pour l'instant,
envoyons simplement ceci au client. Donc point de réponse B. D'accord.
De retour dans le navigateur. Passons maintenant
à l'API COSSO. Vous pouvez donc voir que nous avons bien lu la valeur de
ce paramètre. Il est également possible d'avoir plusieurs paramètres dans un itinéraire. Par exemple, imaginez que vous créez un service
pour alimenter un bloc, afin que nous puissions avoir un itinéraire
comme celui-ci après votre mois. Nous avons donc deux paramètres. Et avec cela, nous pouvons obtenir tous les messages du
mois et de l'année donnés. Nous pouvons maintenant lire ces
paramètres comme avant. Demandez donc des points PRMs
point par an ou par mois. Pour cette démo, laissez-moi vous montrer ce point de requête PremsObject.
De retour dans le navigateur. Passons maintenant à l'
API post 2023 et une autre. C'est donc l'objet de notre
requête PAmS. Nous avons deux
propriétés et un mois, et elles sont nommées en
fonction des paramètres de notre itinéraire. Avec l'Express, nous pouvons également obtenir les paramètres des chaînes de requête. Il s'agit de paramètres que nous ajoutons dans l'URL après
un point d'interrogation. Par exemple, nous pouvons
obtenir tous les articles en janvier 2023 et
les trier par nom. Nous ajoutons donc un point d'interrogation, trions en le définissant sur le nom. Il s'agit d'un paramètre de
chaîne de requête. Nous utilisons des
paramètres de chaîne de requête pour fournir des données
supplémentaires
à nos services principaux. Nous utilisons donc des paramètres de route pour les valeurs essentielles ou
obligatoires, alors que nous utilisons des paramètres de
chaîne de requête pour tout ce qui est optimal. Maintenant, laissez-moi vous montrer comment
lire les paramètres d'une chaîne de requête. Donc, de retour dans le code VS, au lieu de demander des points PRM, nous utilisons la requête point de demande, enregistrons à nouveau dans Chrome, et
voici ce que nous obtenons Les paramètres de requête sont donc stockés dans un objet contenant un ensemble
de paires clé-valeur.
9. Maîtriser les requêtes HTTP GET: Je vais bien. Implémentons maintenant
un nouveau point
de terminaison pour obtenir un cours unique
depuis le serveur. Tout d'abord, revenons
aux cours et ajoutons le paramètre
ID ici. OK, maintenant, en haut, définissons un tableau
appelé cours. Des cours donc constants. Nous l'avons défini comme un tableau. Et dans ce tableau, nous
allons avoir trois objets de
cours. Chaque objet doit donc
avoir deux
propriétés, un identifiant et un nom. Et bien sûr, nous pouvons en avoir plus. Mais par souci de simplicité, je
vais m' en tenir à
deux propriétés ici. OK, maintenant dupliquons
cette ligne et changeons les identifiants ainsi que les
noms deux et trois. Nous avons donc deux points de terminaison, l'un pour accéder à tous les cours et l'autre pour obtenir un
seul cours, n'est-ce pas ? Dans le premier,
nous allons
renvoyer notre liste de cours. OK ? Maintenant, dans le second, nous devrions écrire une
logique pour rechercher le cours avec un
identifiant donné. Permettez-moi donc de supprimer ceci. Nous allons d'abord suivre
les cours point FIE. Il s'agit d'
une méthode disponible sur tous les tableaux en JavaScript. En tant qu'argument de cette méthode, nous devons transmettre une fonction. Cette fonction
sera utilisée pour trouver un cours correspondant à
un critère donné. Nous utilisons donc la syntaxe de
la fonction flèche. T va à, et nous
écrivons ici une logique qui
renvoie une valeur booléenne Cette valeur booléenne détermine si ce cours est celui
que nous recherchons L'ID C doit donc être égal à
request point proms point ID. Cependant, cette demande à
Pam ID renvoie une chaîne. Donc, pour que cette
comparaison fonctionne correctement, nous devons passer cette
chaîne dans un entier. Nous appelons donc pasen, qui est l'une des fonctions
globales disponibles en Javascript, puis nous obtenons le
résultat et le
stockons dans une constante appelée quote Nous pouvons maintenant
utiliser let ou constant. Nous utilisons let si vous voulez définir une variable que nous pourrons réinitialiser ultérieurement et nous utilisons constant si nous
voulons définir une constante. Dans ce cas, je ne veux pas
réinitialiser le cours plus tard
dans cette fonction, mais encore une fois, il est
parfaitement normal d'utiliser let here également. C'est juste une préférence personnelle. Nous obtenons l'objet du cours. Maintenant, si ce cours n'a pas
de valeur, en d'autres termes, si nous ne trouvons aucun cours avec
un identifiant donné, par convention, nous devons renvoyer une réponse avec le code d'état TDP
de quatre ou quatre Cela signifie que l'objet n'a pas été trouvé. C'est donc l'une des
conventions des ABI reposantes. Si le client
demande une ressource, mais que cette ressource n'existe
pas sur le serveur, nous devons renvoyer une réponse avec un code d'état
de quatre ou quatre. Donc, renvoyez l'
état du point de réponse quatre ou quatre, et de manière optimale, nous pouvons également
envoyer un message
au client Donc, envoyer le cours avec un identifiant
donné n'a pas été trouvé. OK ? Sinon, si nous avons un
identifiant de cours avec cet identifiant, nous allons simplement le
renvoyer au client. Donc, le point de réponse est un cours. Maintenant, testons cela. B dans le navigateur,
passons à Slash API slash
courses slash one Nous avons donc un cours avec l'ID un, et c'est pourquoi nous obtenons cet objet
SN dans la réponse. OK, si je le change à
dix, nous recevrons ce message. Le cours associé à un
identifiant n'a pas été trouvé. Et pour nous assurer que
le code d'état de cette réponse est quatre ou quatre, nous pouvons l'ouvrir à partir des outils
de développement. Cliquez donc avec le bouton droit sur Effacer,
passez à inspecter. Ensuite, dans l'onglet réseau, assurez-vous qu'il n'y a pas
de filtre ici,
sélectionnez tout, puis actualisez
la page en appuyant sur
Ctrl R sous Windows
ou sur Command R sous Mac. Voici donc une requête que
nous envoyons au serveur. Vous pouvez voir que le
code d'état est quatre ou quatre, ce qui signifie introuvable.
10. Traiter efficacement les demandes POST: Jusqu'à présent, nous avons
créé deux routes qui répondent à SttpgrQuest Et nous utilisons ces itinéraires pour accéder à tous les cours
ainsi qu'à un seul cours. Dans cette conférence, je
vais vous apprendre à répondre
à STTPPostrQuest Nous utilisons donc une requête de publication TTP
pour créer un nouveau cours, donc app point post Au lieu de la méthode G, nous utilisons la méthode post. Maintenant, comme pour la méthode G, nous devons spécifier un pap. Cela devrait donc être une barre oblique EBS CSS, car nous allons publier avec une
collection de C'est pourquoi j'utilise un nom
pluriel ici. Ensuite, nous avons besoin de notre gestionnaire de route, donc la demande et la réponse
vont à Card black Dans ce gestionnaire de route,
nous devons lire l'objet de cours qui doit se trouver dans le
corps de la demande Utilisez ses propriétés pour créer
un nouvel objet de cours
, puis ajoutez-le
à notre tableau de cours. Créons un nouvel objet de
cours. Cours constant. Encore une fois, j'utilise une
constante car nous n'
allons pas réinitialiser
cet objet de cours ultérieurement Définissons-le donc
sur un nouvel objet. Maintenant, comme nous ne
travaillons pas avec une base de données, nous devons
attribuer manuellement un identifiant. Donc, identifiez, et nous obtenons le nombre d'éléments
de notre tableau de cours,
c'est-à-dire la longueur des points des cours, et nous y ajoutons simplement un. À l'avenir, lorsque nous
travaillerons avec une base de données, l'identifiant sera attribué
par la base de données. Vient ensuite la propriété du nom. Nous devons maintenant le lire
dans le corps de la demande. Demandez donc le nom du point body point. Donc, ici, je suppose que
dans le corps du point de demande, nous avons un objet et que
cet objet a une propriété name. Maintenant, pour que
cette ligne fonctionne, nous devons activer l'
analyse des objets JSN dans le corps de la requête,
car par défaut, cette fonctionnalité n'est pas
activée dans Express Donc, en haut, après avoir
obtenu l'objet de l'application, nous devons appeler app.us et
ici nous appelons express point JSON Cela peut vous sembler un
peu étrange ou peu familier,
mais ne vous inquiétez pas. Plus loin dans cette section, nous
allons explorer cela en détail. En gros, ce que
nous faisons ici c'est ajouter un intergiciel Ainsi, lorsque nous appelons la méthode
Express Jin, cette méthode renvoie un
intergiciel Ensuite, nous appelons l'application pour utiliser ce middleware dans le pipeline de traitement des
demandes Encore une fois, nous allons
explorer cela en détail plus loin dans la section. Pour en revenir à notre nouveau gestionnaire d'itinéraires, nous avons un objet de cours Ensuite, nous l'introduisons dans notre tableau, afin que les cours suivent leur cours. Enfin, par convention, lorsque nous publions un
objet sur le serveur, lorsque le serveur crée un nouvel
objet ou une nouvelle ressource, vous devez renvoyer cet objet dans le corps de la réponse. Donc, le point de réponse est un cours. La raison en est que nous attribuons ce
D au serveur, nous devons renvoyer cet
objet de cours au client
car il est probable
que le client besoin de
connaître l'identifiant ce nouvel objet ou de
cette nouvelle ressource Voici donc comment nous gérons les requêtes de publication
HTTP. Dans la prochaine conférence,
je vais vous
montrer comment
tester ce point de terminaison.
11. Tester les points de terminaison avec Postman: Très bien, pour appeler les services
SDDP, nous allons utiliser
l'API Postman Donc, si vous n'avez jamais
utilisé Postman auparavant, postman.com et téléchargez
l'application sur Donc, en haut à droite, accédez au téléchargement
du produit. Une fois téléchargé, ouvrez ce fichier et installez-le dans votre
système comme suit. Une fois cela fait, vous pouvez ouvrir Postman comme n'importe quelle autre
application de votre système. Maintenant, il se peut qu'il vous
soit demandé de créer un compte, mais vous n'êtes pas obligé de le faire. Comme nous travaillons localement, nous pouvons utiliser un
bloc-notes, d'accord Maintenant, sur cette page, nous pouvons
créer une nouvelle requête TTB. Ainsi, à partir de ce menu déroulant, nous définissons le type d'
une demande de publication. Vous avez mis l'URL ici. Dans ce cas, il s'agit de
TDP, hôte local. Sur ma machine, j'utilise le
port 3 000 pour héberger cette application, APIs Courses. Nous devons maintenant définir le corps de cette demande à partir de cette liste, sélectionner Pro puis JSN Ainsi, nous pouvons mettre un objet JSN dans le
corps de la requête Ajoutons donc un objet ici
et donnons-lui un nom de viol. Par nom, nous l'avons défini comme nouveau
cours, puis nous l'avons finalement défini. Vous pouvez voir que le statut
de cette demande est 200, qui signifie qu'
elle a été traitée avec succès. Et voici le corps
de la réponse. L'ID est donc quatre parce que nous avons
maintenant quatre
cours dans notre catalogue, et c'est le même nom
que celui que nous envoyons au serveur. Voici donc comment nous testons les
services HTTP à l'aide de Postman. Maintenant, dans cette implémentation, nous avons supposé qu'
il existe un objet avec une propriété name dans
le corps de la demande. Que faire si le client
oublie d'envoyer cette propriété ou envoie
un nom non valide, peut-être un nom
trop court ? C'est là que la validation des entrées
entre en jeu, et c'est le sujet
de la prochaine conférence.
12. Protéger votre application avec la validation des entrées: Dans cette conférence,
je vais
vous montrer comment effectuer la validation des entrées. en tant que bonne pratique en matière de sécurité, vous ne devez jamais vous fier à
ce que le client vous envoie. Vous devez toujours
valider la saisie. Ainsi, dans cet exemple particulier, étant donné que nous avons affaire
à un objet
simple dont une seule propriété est le nom, nous pouvons écrire une logique de
validation comme celle-ci. Donc, si je demande que le nom du
point n'
existe pas ou que je demande que la longueur du nom du point
soit inférieure à trois, nous allons renvoyer
une erreur au client. La convention RESTful consiste
à renvoyer une réponse avec le code d'état 400 Cela signifie une demande PAD. Pour ce faire, nous appelons le point de
réponse status 400, puis nous pouvons envoyer
un message d'erreur. Dans ce cas, nous pouvons écrire un message d'erreur générique tel que le nom est obligatoire et
doit comporter au moins trois caractères. À présent, dans votre implémentation, vous souhaiterez peut-être
différencier les erreurs. Par exemple, si le client
n'a pas envoyé la propriété name, peut-être devriez-vous simplement répondre
en indiquant que le nom est requis. Ou s'ils ont envoyé le nom, mais que celui-ci
n'était pas assez long, vous pourriez envoyer un
autre message d'erreur. Enfin, nous revenons ici car nous ne voulons pas que le reste de la fonction soit exécuté. Il s'agit d'une idée de base. Cependant, dans
le monde réel, il est plus probable que vous travailliez avec un objet
complexe, quelque chose de plus complexe que
cet objet de cours présenté ici. Vous ne voulez pas écrire une logique de validation
complexe comme celle-ci au début
de votre gestionnaire de route Permettez-moi donc de vous présenter un package de
nœuds qui vous
permet de
valider très facilement l'entrée. Donc, sur Google, si vous
recherchez NPM Joy with I, regardez, voici le premier lien Vous pouvez donc voir ici qu'il y a plus de 8 millions de téléchargements par semaine. C'est un package très populaire. Maintenant, je vais
vous montrer comment remplacer cette logique de validation par Joy. Alors d'abord, de retour dans le
terminal, installons Joy. Au moment de l'
enregistrement de cette vidéo, la dernière version
est la version 17.9 0.2 Si vous voulez vous
assurer que nous avons exactement
la même expérience que celle que je vais vous
montrer dans cette vidéo, installez cette version exacte. Donc NPM install hoy
à 17.9 0.2, d'accord ? Maintenant, revenons dans le code en haut de page, nous devons charger ce module. Exigez donc Joy, obtenez le résultat
et stockez-le dans une constante appelée Joy with J car ce qui est écrit à partir de
ce module est une classe. Et comme je vous l'ai
déjà dit, en JavaScript, nous utilisons la convention de dénomination Pascal
pour nommer nos classes. La première lettre de chaque
mot doit donc être en majuscule. est également recommandé mettre toutes les
pauses nécessaires au-dessus de ce fichier. De cette façon, vous pouvez
facilement voir quelles sont les dépendances
de ce module. Ce module d'application
dépend donc de deux modules. L'un est Joy, l'
autre est Express. Cette classe Joy est maintenant de
retour dans notre gestionnaire d'itinéraires. Maintenant, avec Joy,
nous devons d'abord définir un schéma. Un schéma définit la
forme de nos objets. Quelles sont les propriétés de cet objet ? Quel est le type
de chaque propriété ? Avons-nous un e-mail ?
Avons-nous une ficelle ? Quel est le nombre minimum ou
maximum de caractères ? Avons-nous un numéro ? Dans quelle fourchette
doit se situer ce chiffre ? C'est donc un travail de Schema. Donc, ici, je vais
d'abord définir un schéma. Sur le schéma envoyé, nous l'avons
défini sur un objet. C'est la forme de
notre objet de cours. Ici, nous voulons
avoir une propriété de nom, et nous l'avons définie sur
Joy dot string. Nous disons donc à Joy
qu'il s'agit d'une chaîne, qu'elle doit comporter
au moins trois caractères et qu'elle doit être obligatoire. Il dispose donc d'une API très fluide. Encore une fois, vous pouvez consulter la documentation pour voir toutes
les méthodes disponibles. Voici donc notre schéma. Maintenant, nous appelons schema point Validate, et nous lui donnons une requête dans le corps. Maintenant, cette méthode de validation
renvoie un objet. Stockons cela dans une
constante appelée résultat. Pour cette démo, je vais
enregistrer ce résultat sur la console. Donc, avant d'aller plus loin, disons ceci,
revenons au facteur Créons un autre cours. Maintenant, retournez dans le terminal. C'est donc notre objet de résultat. Il possède deux propriétés,
l'erreur et la valeur. Seul l'un d'entre eux
peut avoir une valeur. Dans ce cas, comme nous
envoyons un objet de cours valide, nous avons cet objet ici en
tant que valeur de la propriété value. Si vous envoyez un objet non valide, la valeur sera nulle et une erreur sera définie.
Laisse-moi te montrer. Alors, associez les postiers, supprimons la propriété du nom Renvoyez-le maintenant dans le terminal. OK, regardez, voici
l'objet obtenu. Il s'agit de la propriété d'erreur. Il est défini sur un objet présentant
une erreur de validation. Le nom est obligatoire. Pour
en revenir à un gestionnaire de route, au lieu de cette logique de
validation manuelle, nous pouvons vérifier la valeur de la propriété d'erreur
result thot. Donc, si cette erreur se produit, nous allons envoyer une
réponse avec le code
d'état 400 et dans le
corps de la réponse. Pour l'instant, nous pouvons simplement ajouter une erreur de point de
résultat, d'accord ? Et vous n'avez plus besoin de ce journal à points de la
console. Dis. Maintenant, de retour dans Postman, une fois de plus, je vais
envoyer cet objet vide Maintenant, regardez la réponse. C'est donc ce que nous obtenons. Un objet doté de ces propriétés. Détails d'origine, qui sont
un tableau de messages d'erreur. Voici donc le premier message. Le nom est obligatoire. Maintenant, cet objet est trop
complexe pour envoyer le type. Vous voulez peut-être
simplifier les choses. Pour revenir au code,
une solution simple
consiste à accéder au tableau des détails, à obtenir le premier élément,
puis à accéder à la propriété du
message. Ainsi, au lieu d'utiliser
le premier élément, vous souhaiterez peut-être accéder à tous les
éléments de ce tableau, obtenir leur propriété de message
et les concaténer Cela dépend entièrement de vous. Alors, économisez une fois de plus, envoyons une demande non valide, et maintenant nous obtenons le nom requis. Si vous accédez à notre demande
et que vous ajoutez la propriété name, mais
que vous l'avez envoyée à une chaîne d'un seul caractère, nous obtenons
maintenant une erreur différente. La longueur du nom doit être d'au moins
trois caractères. Vous pouvez donc voir que Joy
permet de valider très facilement les entrées et de renvoyer messages
d'erreur
appropriés au client.
13. L'art de la requête HTTP PUT: C'est bon. Voyons maintenant
comment mettre à jour un cours. Ajoutons une nouvelle application de gestion d'
itinéraires. Nous utilisons la méthode put
pour mettre à jour les ressources. Maintenant, la partie devrait être
slash API slash Courses. Et ici, nous avons besoin
d'un paramètre de route car nous avons
affaire à un parcours spécifique. Donc, l'identifiant, maintenant la fonction, la
demande et la réponse du
gestionnaire de route passent à un quod black C'est bon. Maintenant, voici la
logique que nous devons mettre en œuvre. Tout d'abord, nous devons rechercher
ce cours avec un identifiant donné. Alors, recherchez le cours. Si le cours n'existe pas, s'il n'existe pas, nous
devons en renvoyer quatre ou quatre. Cela signifie que la ressource n'a pas été trouvée. Sinon, nous devons
valider le cours, assurer qu'il est en bon état. Si c'est valide, nous devons
renvoyer une erreur 400, ce qui signifie une demande Pat. Si vous arrivez ici, cela
signifie que tout va bien. Nous mettons donc à jour le cours et le
renvoyons au client. C'est une logique que nous
devons mettre en œuvre. Nous avons déjà du code
que nous pouvons réutiliser ici. Je ne vais pas
tout taper à la main. Je vais copier du code provenant de nos autres gestionnaires d'itinéraires abord, nous voulons
rechercher le cours et s'il n'existe pas, nous voulons renvoyer une erreur de
quatre ou quatre. Pour cela, je vais passer à cet autre gestionnaire d'itinéraires
où nous n'avons qu'un seul cours C'est une logique
qui nous intéresse. Nous consultons le cours
et s'il n'existe pas, nous renvoyons une erreur de quatre ou quatre. Copiez donc ces deux lignes,
nous en avons terminé avec la première partie. La deuxième partie est
entièrement consacrée à la validation. Pour cela, je vais me
rendre sur notre point de terminaison de publication. Ici, nous devons
copier le schéma, ainsi que cette ligne pour valider le corps de la
requête en utilisant joy et le code pour renvoyer
400 s'il n'est pas valide Mais cette approche pose
un problème. Le problème est que, dans ce cas, nous avons un schéma très simple. Et si vous avez affaire à un objet complexe
doté de nombreuses propriétés ? Ensuite, notre
logique de validation serait dupliquée dans différents
itinéraires de chargement. Copions donc le
bateau pour le moment, puis nous reviendrons le
refactoriser pour l'améliorer Copiez donc ces lignes
et collez-les ici. Nous sommes donc en train de valider, et si vous avez une
erreur dans le résultat, nous allons renvoyer
cette erreur 400 Voici donc notre deuxième partie. Nous avons le schéma, nous le validons, et si nous avons une erreur, nous renvoyons l'erreur 400. Nous en avons terminé avec la deuxième
partie. Maintenant, la troisième partie. À ce stade, nous
avons donc un objet de cours. Nous pouvons mettre à jour ses propriétés, donc bien sûr point nem, nous l'avons configuré pour
requérir point p point Et bien sûr, si nous
avons d'autres propriétés, nous les définirons également ici. Nous en avons donc terminé avec la
mise à jour du cours, et enfin, nous devons renvoyer le
cours mis à jour au client. Cours Response point CN. C'est ainsi que nous gérons
une StdbputrQuest. Maintenant, je vous ai dit que nous
avons dupliqué cette logique
de validation Je vais extraire ces quelques lignes dans une fonction
distincte que nous pouvons réutiliser à la fois dans ce gestionnaire de route pour gérer un STTPPutrQuest, ainsi que dans l'autre fonction que nous avons écrite dans
la dernière conférence pour créer
un la dernière conférence Définissons maintenant une
fonction ici et appelons-la validate course. Nous lui donnons un objet de cours. Maintenant, dans cette fonction, nous
devrions avoir le schéma ainsi que cette ligne pour
valider le cours Alors coupez ces quelques
lignes, collez-les ici. Maintenant, au lieu de valider le corps du point de
requête, nous allons valider l'argument
transmis à cette méthode, afin qu'il soit
l'objet du cours Enfin, nous pouvons simplement renvoyer
ce résultat à l'appel. Il n'est pas nécessaire de
définir une constante. Avec cette nouvelle implémentation,
nous avons donc toute la logique de
validation en un seul endroit. Nous
pouvons maintenant le réutiliser. Voici donc notre méthode de vente. Nous définissons un résultat d'appel constant et le configurons pour valider le cours. Et comme argument, nous
transmettons request point body. Nous pouvons maintenant rendre ce code un peu plus propre et plus court en utilisant la
fonction de déstructuration d'objets dans le Javascript moderne Alors regardez, nous obtenons ici cet objet de
résultat et nous
accédons à la propriété d'erreur du
point de résultat à deux endroits différents. Puisque tout ce qui nous
intéresse est cette propriété d'erreur, nous pouvons l'obtenir en restructurant les
objets. Permettez-moi donc de dupliquer
cette ligne et vous
montrer comment fonctionne la
déstructuration d'objets de la restructuration d'objets, lors de la déclaration d'une
variable ou d'une constante, nous ajoutons culebrass, puis nous ajoutons
ici la propriété
de l'objet cible Dans ce cas, l'
objet cible renvoyé par
notre méthode de cours valide possède deux propriétés, error et value. Dans ce cas, nous
voulons simplement la propriété d'erreur. Nous l'avons donc placé
entre les bretelles Cul. Cela équivaut donc à
obtenir une erreur de point de résultat. Nous utilisons cette notation. OK. Maintenant, avec cela, nous n'avons pas à
répéter l'erreur
de résultat différents endroits. Nous pouvons simplement utiliser l'erreur, d'accord ? Il s'agit donc de déstructuration d'objets. Maintenant, nous n'avons plus besoin de cette
première ligne. Enfin, avant de
terminer cette conférence, nous devons apporter une autre
modification à ce code. Nous devons donc utiliser cette nouvelle
méthode de validation d'un cours dans le gestionnaire de route pour gérer
notre requête de publication STTP Donc, copiez-le, c'est notre gestionnaire
pour créer un nouveau cours. Nous n'avons donc pas besoin d'
utiliser le schéma ici. Nous transférons toute cette logique à
notre fonction de validation de cours. Je vais le supprimer
et reconstituer le code que nous avons copié
à partir de l'autre méthode. Nous appelons donc le cours de validation, utilisons la syntaxe de restructuration des objets, et si vous avez une
erreur, nous renvoyons la réponse 400 au client. Enfin, testons notre nouveau point de terminaison pour
mettre à jour un cours. Maintenant, dans Postman, nous devons changer le type
de cette demande STDP à mettre, modifier l'URL et ajouter un identifiant de cours
valide, comme un identifiant de cours Ici, nous avons un objet de cours
valide dont le nom est défini comme nouveau cours . Nous recevons
donc une réponse 200 qui est réussie et voici
le cours mis à jour. Donc, si vous ouvrez un nouvel onglet
et envoyez une demande TPG à des cours d'API localisés, vous devriez voir cette
liste de nos cours Premier cours, son
nom est mis à jour. Parfait. Maintenant, testons
les autres scénarios. Et si nous envoyons une pièce d'identité non valide ? Nous dix. Envoyer le cours avec
un identifiant donné n'a pas été trouvé, et vous pouvez voir que la réponse est quatre ou quatre, ce qui
signifie « introuvable ». Enfin, que se passe-t-il si nous
envoyons un
identifiant de cours valide mais un objet de cours non valide ? Je vais donc supprimer
la propriété name, S qui indique que nous avons une
mauvaise demande ou une erreur 400. Et voici le message d'erreur. Le nom est obligatoire. Ensuite, je vais vous montrer comment
gérer une demande de suppression SDDP
14. Exécuter correctement les demandes de suppression: Et parmi toutes les
opérations CRD que nous avons mises en œuvre, nous les
créons, les lisons et les mettons à jour Dans cette conférence, je
vais donc vous montrer comment répondre
à une demande de
suppression HTDP C'est très simple et similaire
à ce que nous avons fait jusqu'à présent. Voici donc l'objet de notre application. C'est ce que nous appelons la méthode de suppression. Donnez-lui un chemin qui
soit slash API Courses. Et bien sûr, nous avons
besoin d'un paramètre car nous travaillons
avec un cours spécifique. Ensuite, la demande
et la réponse de notre gestionnaire de route sont
transmises au bloc Cord. Maintenant, nous devons d'abord
rechercher le cours, un cours avec un identifiant donné. S'il n'existe pas, nous
devons renvoyer quatre ou quatre. Dans le cas contraire, nous
allons le supprimer. Et par convention,
renvoyez le même cours, le cours qui a été supprimé. Encore une fois, je vais
emprunter du code à d'autres gestionnaires d'
itinéraires pour consulter le cours et
renvoyer une erreur de quatre sur quatre Permettez-moi de revenir à
notre gestionnaire de route pour la demande STP put Ces deux premières
lignes servent donc à rechercher le cours et à renvoyer
une erreur de quatre sur quatre. Donc, recopiez ces deux lignes ici. C'est notre première partie. Maintenant, pour supprimer un cours,
nous devons d'abord trouver l'index de ce cours dans notre tableau de
cours. Donc,
bien sûr, nous obtenons l'index, nous le stockons dans une constante, puis nous pouvons utiliser
la méthode splice, supprimer un objet de
notre tableau de cours Donc les cours pointent Splice, on passe à cet index
et on supprime un objet Il s'agit donc d'une partie à supprimer. Enfin, nous devons renvoyer
la réponse à la réclamation. Donc, réponse qui envoie
cet objet de cours. Maintenant, testons cela. Bag in Postman,
changeons le texte pour le supprimer. Tout d'abord, je veux envoyer un identifiant de cours
non valide, par exemple ten s, afin que nous obtenions une erreur
quatre ou quatre, introuvable avec ce message. Parfait.
Supprimons maintenant le premier porte-monnaie. Cours avec ID One. Ensuite, nous obtenons le même
objet de cours dans la réponse. Et si nous accédons à notre deuxième onglet où nous avons la
liste de nos cours, envoyons-la une fois de plus. OK, maintenant, regardez, nous n'
avons plus notre premier sac à main. Nous n'avons que des cours
avec les numéros deux et trois. C'est bon.
Avant d'aller plus loin, examinez le gestionnaire qui
répond à la demande de vente En cas d'erreur,
une méthode plus courte pour écrire le même code est de
mettre le retour ici, et nous n'avons pas
besoin d'un bloc de code. Nous pouvons tout mettre
sur une seule ligne. Enfin, examinons le
gestionnaire de la demande de publication
du PIB C'est ici. Encore une fois, je vais utiliser la même technique
pour nettoyer ce code. Donc, si nous avons une erreur, nous revenons simplement et nous débarrassons
du bruit supplémentaire contenu dans ce
code. C'est bien mieux.
15. Projet : application FareWheels: C'est bon. C'est maintenant l'
heure de faire de l'exercice. À partir de cette conférence, nous
allons donc commencer à créer les services principaux pour notre application
Fair Wheels Comme je vous l'ai
déjà dit, fair wheels est un service imaginaire
de location de voitures. Tout au long de ce cours,
nous allons donc construire petit à petit le backend de Fair Wheels. Notre première tâche consiste à
créer un service de gestion de la liste des
constructeurs ou constructeurs automobiles. Chaque voiture a donc un constructeur
comme General Motors, Tesla, Ord, etc. Nous devrions avoir un point de terminaison
pour obtenir la liste de toutes les entreprises, car quelque part dans notre application
client, nous avons
peut-être une liste déroulante permettant à l'utilisateur de
sélectionner une entreprise. Nous avons donc besoin d'un point de terminaison pour
accéder à toutes les entreprises. Nous devrions également être en mesure d'ajouter une nouvelle entreprise ainsi que mettre à jour ou de supprimer
une entreprise existante. Donc, avant d'aller plus loin, je veux que vous mettiez en pratique ce que vous avez appris jusqu'à présent, et ce sera également
votre mission. Donc, même si vous êtes un développeur
expérimenté, ne dites pas non et ne
trouvez même pas d'excuse. Je sais comment faire.
C'est tellement simple. Je sais que c'est facile,
mais ce qui compte maintenant c'est que je veux que vous vous
habituiez à cette syntaxe. Alors allez-y, lancez un nouveau
projet à partir de zéro, tout porte ses fruits et créez ce service TDP pour gérer
la liste des entreprises