2016-09-13 27 views
0

我無法理解如何在nodejs中使用。我明白得到主要是用來渲染一個頁面。但是,這個示例應用程序中的後期工作如何?如何在nodejs中使用post?

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"); 
}) 

這裏是發送到localhost:3000/login的數據?

如果是這樣,爲什麼我會得到一個404網絡錯誤當我去這個網址時無法獲取/登錄

究竟發生了什麼?請解釋。

回答

1

當您在瀏覽器中鍵入'localhost:3000/login'時,它將使用HTTP get方法。有許多HTTP方法,例如post,put,get等。

現在,當您提交像HTML表單或通常執行HTTP post方法並將數據發送到服務器的東西時。

所以既然你沒有get方法來登錄,你會得到一個404錯誤,因爲它沒有得到。

例如,使用下面的HTML代碼會在您提交表單時向/ login發送一個post請求。

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

提交該表格應CONSOLE.LOG的用戶名和您鍵入的密碼。在HTML表單上的name屬性對應於你的代碼的req.body.password變量。因此,如果您將密碼更改爲表單上的其他內容或快速代碼中的密碼,則該密碼將無法使用,並且會被定義爲未定義。

0

路線是建立在2個部分,動詞(GET,POST,PUT,PATCH,DELETE)和「URI」

在你的代碼有應處理的識別後登錄路由用戶。在你的情況下,只需控制檯登錄用戶名和傳遞。你一定會創建一個會話,然後重定向用戶。所以這條路線可能沒有看法。

您的404來自您沒有顯示登錄表單的路由。假設你想要一個專門的頁面。您必須創建GET /登錄路線,然後創建該路線的視圖。

如果您計劃在頁眉或側邊欄中顯示登錄表單,則不需要GET /登錄路由。