Node.js - 3.7 Router les requêtes et afficher un formulaire
Un serveur web utile répond différemment selon l'adresse demandée. Cette leçon montre comment lire l'URL d'une requête et choisir la réponse selon le chemin demandé. Elle prépare l'envoi d'un formulaire vers le serveur.
Lire l'URL de la requête
L'URL demandée se trouve dans l'objet requête. On la stocke dans une constante, car elle ne change pas pendant le traitement.
Une condition if vérifie si l'URL est égale à la barre oblique, c'est-à-dire à la racine du site. On utilise le triple égal, qui compare à la fois la valeur et le type.
const url = request.url;
if (url === '/') {
// réponse pour la page d'accueil
}
Afficher un formulaire en POST
Pour la page racine, le serveur renvoie du HTML. Ce HTML contient un formulaire avec un champ texte nommé message et un bouton d'envoi. L'attribut action indique l'URL cible, ici /message, et l'attribut method indique la méthode HTTP.
Une requête GET est envoyée automatiquement quand on saisit une URL ou clique sur un lien. Une requête POST doit être configurée dans le formulaire. Le navigateur envoie alors les champs dans le corps de la requête, sous forme de paires clé et valeur.
<form action="/message" method="POST">
<input type="text" name="message">
<button type="submit">Envoyer</button>
</form>
Arrêter la fonction avec return
Le mot-clé return placé avant la réponse arrête la fonction. Sans lui, le code suivant continuerait à s'exécuter, ce qui n'est pas souhaité.
Le serveur doit être redémarré après chaque modification du code. On l'arrête avec Ctrl+C, puis on le relance avec node. La prise en charge de l'URL /message est traitée dans la leçon suivante.
En résumé
La lecture de l'URL permet de choisir la réponse. La page racine renvoie un formulaire HTML qui envoie ses données en POST vers /message. Le mot-clé return évite de poursuivre le traitement après la réponse. La leçon suivante traite les données reçues par le serveur.
Points clés
- L'URL de la requête permet de choisir la réponse.
- Le triple égal compare la valeur et le type.
- Un formulaire en POST envoie ses champs dans le corps de la requête.
- GET est envoyé automatiquement quand on saisit une URL ou un lien.
- return arrête l'exécution de la fonction après la réponse.
Questions fréquentes
Quelle différence entre GET et POST ?
GET demande une ressource, par exemple en cliquant sur un lien. POST envoie des données, comme un formulaire, dans le corps de la requête.
Pourquoi redémarrer le serveur après une modification ?
Le code est chargé au lancement du serveur. Une modification n'est donc prise en compte qu'après un redémarrage.
À quoi sert l'attribut name du champ ?
Il donne le nom du champ dans les données envoyées. Ici, le nom message permet de retrouver la valeur saisie côté serveur.