Problème de root avec express.js

Par Gatien Tafforeau, il y a 10 ans


Javascript NodeJS

Bonjour,

Voila je rencontre un petit problème avec mon code. En faite j'ai du mal à gérer mes routes avec express js

Ce que je fais

fichier index.html ( formulaire)

<form method="post" action="post.html"> <tr> <td>Identifiant:</td> <td colspan="2">Mot de passe:</td> </tr> <tr> <td><input class="textbox" type="text" name="pseudo"/></td> <td><input class="textbox" type="password" name="mdp"/></td> <td><input class="button" type="submit" value="GO"></td> </tr> </form>

fichier de route géré avec express (app.js)

var express = require('express'); //Module express requis (Framework node js) var path = require('path'); //Module Path requis, pour les chemins de fichier var http = require('http'); var bosyParser = require("body-parser"); var util = require('util'); var app = express(); //Instantiation du serveur app.set('port', process.env.PORT || 8080) //Port d'écoute app.use(bosyParser.urlencoded({extended: true})); app.use(express.static(path.join(__dirname, '../www'))); //Pour pouvoir utiliser des chemins relatifs dans les fichier utilisés http.createServer(app).listen(app.get('port'), function(){ console.log('Serveur express ouvert au port ' + app.get('port')); }); //Création du serveur et écoute du port 8080 //Fonction qui gère le formulaire de connexion app.post('/post.html', function(request,response){ var name = request.body.pseudo; console.log('La variable vaut = ' + name); next(); response.sendFile(path.resolve(__dirname + '/../www/acceuil.html')); //Envoye la page d'accueil }) //On renvois le fichier index.html lorsque l'on cherche le chemin / app.get('/', function(req, res){ console.log('ok'); res.sendFile(path.resolve(__dirname + '/../www/index.html')); }) //Création d'une autre route 'connexion.html (une fois le client connecté)

Ce que je veux

En faite je veux changer la route post de 'post.html' et la ridiriger dans la route get '/' ou une autre route get 'connexion.html'
suivant ce que renvois la base de donnée ( en gros si le client existe ou pas)

Ce que j'obtiens

J'ai utilisé la méthode 'next()' d'express, mais ça ne me redirige pas et cela fait planter mon appli.

Est-ce que quelqu'un serait comment s'y prendre pour que ma route post.html redirige sur / dans certains cas?

Merci d'avance

2 réponses

Defy, il y a 10 ans

next() ne redirige pas, c'est pour faire passer une valeur de middleware en middleware, tu doit utiliser response.redirect('/')

tien un extrait tiré de la doc d'express:

res.redirect([status,] path) :
Redirects to the URL derived from the specified path, with specified status, a positive integer that corresponds to an HTTP status code . If not specified, status defaults to “302 “Found”.

res.redirect('/foo/bar'); res.redirect(301, '/foo/bar');
Gatien Tafforeau, il y a 10 ans

Génial ça semble être ce que je veux, je vais tester ça dès que je peux me loguer sur ma machine.
Merci Defy