2016-01-28 49 views
-1
var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 

// Create application/x-www-form-urlencoded parser 
var urlencodedParser = bodyParser.urlencoded({ extended: false }) 

app.use(express.static('public')); 

app.get('/index.htm', function (req, res) { 
    res.sendFile(__dirname + "/" + "index.htm"); 
}) 

app.post('/process_post', urlencodedParser, function (req, res) { 

    // Prepare output in JSON format 
    response = { 
     first_name:req.body.first_name, 
     last_name:req.body.last_name 
    }; 
    console.log(response); 
    res.end(JSON.stringify(response)); 
}) 

var server = app.listen(8081, function() { 

    var host = server.address().address 
    var port = server.address().port 

    console.log("Example app listening at http://%s:%s", host, port) 

}) 
  1. var bodyParser = require('body-parser');
  2. var urlencodedParser = bodyParser.urlencoded({ extended: false })body-parser有什麼用?

  3. app.post('/process_post', urlencodedParser, function (req, res)

任何人都可以請解釋上述三行代碼的目的,有什麼用身體解析器的?

回答

2
  1. bodyParser將從請求中分析正文中的req.body屬性。通過Line 1,您只需通過require在課堂上使用一個即可。

  2. 返回僅解析urlencoded主體的中間件。此解析器只接受身體的UTF-8編碼,並支持gzip和deflate編碼的自動膨脹。擴展選項允許選擇使用查詢字符串庫(如果爲false)或qs庫(如果爲true)解析URL編碼數據。 「擴展」語法允許將豐富的對象和數組編碼爲URL編碼格式,從而允許使用URL編碼的類似JSON的體驗。

  3. 隨着你剛纔說你已經定義了這條路線將使用已定義

最的我從https://github.com/expressjs/body-parser複製的東西bodyparser的最後一行。所以可以看看這個鏈接

2
  1. 假設你有POST路由處理程序接受一些參數,並相應地工作。現在,您從前端應用或移動應用發出請求。您將一些參數傳遞給此請求。現在Parser所做的是從請求中提取參數,解析它並使其可用req.body,並且可以按其特定名稱訪問參數
  2. 這是一箇中間件,它解析了UTF-8編碼的實體。它有助於解析像JSON對象
  3. URL編碼數據這是定義一個特定的路線將使用的urlEncodedParser
的方式