中間件

中間件morgan

https://github.com/expressjs/morgan#url

- morgan 是用來展示http請(qǐng)求的這么一個(gè)中間件

var logger = require('morgan');

app.use(logger('dev'));

中間件body-parser

bodyParser用于解析客戶端請(qǐng)求的body中的內(nèi)容,內(nèi)部使用JSON編碼處理,url編碼處理.

var bodyParser = require('body-parser');

//解析json,解析的content-type 等于application/json

app.use(bodyParser.json()); // for parsing application/json

//解析表單傳輸?shù)臄?shù)據(jù),解析的content-type 等于application/x-www-form-urlencoded

app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

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

console.log(req.body);

res.json(req.body);

})

req取參數(shù)的3種方法

傳參的方式

1. 路徑中通過url的地址 127.0.0.1:3000/getData/2/

2. get請(qǐng)求的url地址的后面使用?分隔后面加 name=zyc&password=123

req.params

req.body

req.query

1,

req.params

//用get請(qǐng)求傳輸過來的參數(shù)

app.get('/user/:id', function(req, res){

res.send('user ' + req.params.id);

});

注意點(diǎn):取帶冒號(hào)的參數(shù)

2,

req.body

可以肯定的一點(diǎn)是req.body一定是post請(qǐng)求,express里依賴的中間件必須有bodyParser,不然req.body是沒有的。

3,

req.query

query是querystring

說明req.query不一定是get

// GET /search?q=tobi+ferret

req.query.q

// => "tobi ferret"

get 請(qǐng)求傳參數(shù)的方式

1. 地址欄里面寫url 127.0.0.1:3000/getData/123

后臺(tái)接參數(shù) 通過在請(qǐng)求路徑的字符串中添加:+參數(shù)名的形式去寫

app.get('/getData/:num',function(req,res){

req.params.num

})

應(yīng)用場景比如:

1. 小說網(wǎng)站通過地址欄里面的參數(shù)變化,修改請(qǐng)求小說的章節(jié)

2. qq空間通過地址欄的不一樣,請(qǐng)求到不同人的空間

3. 分頁

2. 地址欄里面用url加?的形式傳參 127.0.0.1:3000/getData?name="zyc"&age=88

app.get('/getData',function(req,res){

console.log(req.query.name);

})

2. post 接收參數(shù) post是通過報(bào)文體去傳參

1. 先要加載body-parser中間件

2. 使用body-parser中間件里面的兩個(gè)方法去接收參數(shù)

app.use(bodyParser.json());

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

3. 從req.body中去取值

應(yīng)用場景:表單的提交,重要的內(nèi)容

3. 變態(tài)的寫法

使用post請(qǐng)求,但是要從url上面去傳參

1. ajax的post請(qǐng)求里面寫url 127.0.0.1:3000/getData/123

后臺(tái)接參數(shù) 通過在請(qǐng)求路徑的字符串中添加:+參數(shù)名的形式去寫

app.post('/getData/:num',function(req,res){

通過req.params接收ajax請(qǐng)求地址里面的參數(shù)

通過req.body接收ajax請(qǐng)求中data中的參數(shù)

})

2. ajax的post請(qǐng)求里面寫url 127.0.0.1:3000/getData?name=123

后臺(tái)接參數(shù) 通過在請(qǐng)求路徑的字符串中添加:+參數(shù)名的形式去寫

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

通過req.query接收ajax請(qǐng)求地址里面的參數(shù)

通過req.body接收ajax請(qǐng)求中data中的參數(shù)

})

路由中間件的作用

1.項(xiàng)目分工

2.提高可讀性

3.對(duì)比起沒有用路由中間件的寫法代碼更優(yōu)雅了

路由中間件的使用

在早期的express中沒有路由中間件。

在express早起版本將代碼拆分模塊的寫法

在routes創(chuàng)建一個(gè)user.js,用于user模塊代碼的編寫

module.exports = function(app) {

app.get('/getUser',function (req,res) {

????res.send("{success:true}");

} );

}

2.在app.js中引入這個(gè)模塊

var user = require('./routes/user');

3.啟用這個(gè)模塊里面的路由

user(app);

使用路由中間件

1. 在routes創(chuàng)建一個(gè)user.js,用于user模塊代碼的編寫

var express = require('express');

var router = express.Router();

router.get('/getUser', function(req, res) {

res.send("{success:true}");

});

module.exports = router;

2. 在app.js中引入這個(gè)模塊

var user = require('./routes/user');

3. 啟用這個(gè)模塊里面的路由

app.use('/', user);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容