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
Réponse acceptée

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');

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