中間件morgan
https://github.com/expressjs/morgan#url
- morgan 是用來展示http請求的這么一個中間件
var logger = require('morgan');
app.use(logger('dev'));
中間件body-parser
bodyParser用于解析客戶端請求的body中的內容,內部使用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請求的url地址的后面使用?分隔后面加 name=zyc&password=123
req.params
req.body
req.query
1拄轻,
req.params
//用get請求傳輸過來的參數(shù)
app.get('/user/:id', function(req, res){
res.send('user ' + req.params.id);
});
注意點:取帶冒號的參數(shù)
2,
req.body
可以肯定的一點是req.body一定是post請求,express里依賴的中間件必須有bodyParser,不然req.body是沒有的端幼。
3页衙,
req.query
query是querystring
說明req.query不一定是get
// GET /search?q=tobi+ferret
req.query.q
// => "tobi ferret"
get 請求傳參數(shù)的方式
1. 地址欄里面寫url 127.0.0.1:3000/getData/123
后臺接參數(shù) 通過在請求路徑的字符串中添加:+參數(shù)名的形式去寫
app.get('/getData/:num',function(req,res){
req.params.num
})
應用場景比如:
1. 小說網(wǎng)站通過地址欄里面的參數(shù)變化,修改請求小說的章節(jié)
2. qq空間通過地址欄的不一樣苔巨,請求到不同人的空間
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是通過報文體去傳參
1. 先要加載body-parser中間件
2. 使用body-parser中間件里面的兩個方法去接收參數(shù)
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
3. 從req.body中去取值
應用場景:表單的提交,重要的內容
3. 變態(tài)的寫法
使用post請求废离,但是要從url上面去傳參
1. ajax的post請求里面寫url 127.0.0.1:3000/getData/123
后臺接參數(shù) 通過在請求路徑的字符串中添加:+參數(shù)名的形式去寫
app.post('/getData/:num',function(req,res){
通過req.params接收ajax請求地址里面的參數(shù)
通過req.body接收ajax請求中data中的參數(shù)
})
2. ajax的post請求里面寫url 127.0.0.1:3000/getData?name=123
后臺接參數(shù) 通過在請求路徑的字符串中添加:+參數(shù)名的形式去寫
app.post('/getData',function(req,res){
通過req.query接收ajax請求地址里面的參數(shù)
通過req.body接收ajax請求中data中的參數(shù)
})
路由中間件的作用
1.項目分工
2.提高可讀性
3.對比起沒有用路由中間件的寫法代碼更優(yōu)雅了
路由中間件的使用
在早期的express中沒有路由中間件侄泽。
在express早起版本將代碼拆分模塊的寫法
在routes創(chuàng)建一個user.js,用于user模塊代碼的編寫
module.exports = function(app) {
app.get('/getUser',function (req,res) {
????res.send("{success:true}");
} );
}
2.在app.js中引入這個模塊
var user = require('./routes/user');
3.啟用這個模塊里面的路由
user(app);
使用路由中間件
1. 在routes創(chuàng)建一個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中引入這個模塊
var user = require('./routes/user');
3. 啟用這個模塊里面的路由
app.use('/', user);