2016-09-13 6 views
0

Ich habe Probleme zu verstehen, wie post in nodejs zu verwenden. Ich habe verstanden, dass get wird hauptsächlich verwendet, um eine Seite zu rendern. Aber wie funktioniert das Nacharbeiten in dieser Beispielanwendung?Wie Post in Nodejs verwenden?

var express = require("express"); 
var bodyParser = require("body-parser"); 
var app = express(); 

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 

app.get('/',function(req,res){ 
    res.sendfile("index.html"); 
}); 
app.post('/login',function(req,res){ 
    var user_name=req.body.user; 
    var password=req.body.password; 
    console.log("User name = "+user_name+", password is "+password); 
    res.end("yes"); 
}); 
app.listen(3000,function(){ 
    console.log("Started on PORT 3000"); 
}) 

Hier werden die Daten an localhost gesendet: 3000/login?

Wenn ja, warum bekomme ich einen 404 Netzwerkfehler mit Kann ich nicht GET/login, wenn ich diese URL gehe?

Was genau passiert hier? Bitte erkläre.

Antwort

1

Wenn Sie "localhost: 3000/login" in einen Webbrowser eingeben, wird die HTTP get-Methode verwendet. Es gibt viele HTTP-Methoden wie Post, setzen, bekommen usw.

Nun, wenn Sie wie ein HTML-Formular oder etwas vorlegen, die normalerweise einen HTTP-POST-Methode funktioniert und sendet die Daten an den Server.

Also, da Sie keine get-Methode für/Login haben, erhalten Sie einen Fehler 404, da es Post nicht bekommen.

Zum Beispiel den folgenden HTML-Code verwenden würde einen Beitrag Anfrage/Anmeldung senden, wenn Sie das Formular abschicken.

<form action="/login" method="post"> 
    Username:<br> 
    <input type="text" name="user"><br> 
    Password:<br> 
    <input type="text" name="password"> 
</form> 

dieses Formular einreichen sollten Sie die Benutzername und das Passwort eingeben. Das name-Attribut auf der HTML-Form entspricht den req.body.password Variable im Code console.log. Also, wenn Sie das Passwort in etwas anderes auf dem Formular oder auf dem Express-Code geändert haben, würde es nicht funktionieren und wäre nicht definiert.

0

Die Route wird in zwei Teilen aufgebaut, das Verb (GET, POST, PUT, PATCH, DELETE) und die "uri"

In Ihrem Code Sie den Beitrag Login Route haben, die die Identifizierung des Verfahrens sollte Benutzer. In Ihrem Fall loggen Sie einfach den Benutzernamen und den Pass. Sie würden sicherlich eine Sitzung erstellen und dann den Benutzer umleiten. Diese Route könnte also keine Aussicht haben.

Ihre 404 kommt aus der Tatsache, dass Sie für die Anzeige Ihre Login-Formular nicht über eine Route haben. Angenommen, Sie möchten eine dedizierte Seite dafür. Sie müssen eine GET/Login-Route erstellen und dann eine Ansicht für diese Route erstellen.

Wenn Sie planen, den Sie anzeigen Anmeldeformular in der Kopfzeile oder in einer Seitenleiste finden Sie eine GET/login Route nicht benötigen.