中间件

中间件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

//解析表单传输的数据,解析的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取参数的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请求传输过来的参数

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

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

});

注意点:取带冒号的参数

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 请求传参数的方式

1. 地址栏里面写url 127.0.0.1:3000/getData/123

后台接参数 通过在请求路径的字符串中添加:+参数名的形式去写

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

req.params.num

})

应用场景比如:

1. 小说网站通过地址栏里面的参数变化,修改请求小说的章节

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 接收参数 post是通过报文体去传参

1. 先要加载body-parser中间件

2. 使用body-parser中间件里面的两个方法去接收参数

app.use(bodyParser.json());

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

3. 从req.body中去取值

应用场景:表单的提交,重要的内容

3. 变态的写法

使用post请求,但是要从url上面去传参

1. ajax的post请求里面写url 127.0.0.1:3000/getData/123

后台接参数 通过在请求路径的字符串中添加:+参数名的形式去写

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

通过req.params接收ajax请求地址里面的参数

通过req.body接收ajax请求中data中的参数

})

2. ajax的post请求里面写url 127.0.0.1:3000/getData?name=123

后台接参数 通过在请求路径的字符串中添加:+参数名的形式去写

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

通过req.query接收ajax请求地址里面的参数

通过req.body接收ajax请求中data中的参数

})

路由中间件的作用

1.项目分工

2.提高可读性

3.对比起没有用路由中间件的写法代码更优雅了

路由中间件的使用

在早期的express中没有路由中间件。

在express早起版本将代码拆分模块的写法

在routes创建一个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创建一个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);

你可能感兴趣的:(中间件)