express
1、安装express
1.依赖中间件
2.接收请求
get/post/user
3.非破坏式
4.static
npm install express
2、使用
注意:如果下面注释的代码不注释,访问a.html或者b.html,实际上得到的结果还是根目录的结果。不知道各位大佬知不知道是怎么回事,欢迎帮忙解答
const express= require('express');
var server = express();
/*server.use('/',function (req,res) {
res.send('根');
res.end()
});*/
server.use('/a.html',function (req,res) {
res.send('abc');
res.end()
});
server.use('/b.html',function (req,res) {
res.send('123');
res.end()
});
server.listen(8989)
express非侵入式、非破坏式,保留了原生的功能,添加了一些方法(send),增强原生功能
req
res
res.write()//只能是数字、字符串、buffer
res.send()//可以传json对象
res.end()
原生
res.write()
res.end()
使用方式:
引入
const express= require('express');
创建服务
var server = express();
监听
server.listen(8989)
处理请求
server.use('/b.html',function (req,res) {
res.send('123');
res.end()
});
请求有3种方法
server.get(’/’,function(req,res){})//只能接收get数据
server.post(’/’,function(req,res){})//只能接收post数据
server.use(’/’,function(req,res){})//接收get数据或者post数据
const express= require('express');
var server = express();
server.get('/',function (req,res) {
console.log(res)
res.send('根');
res.end()
});
server.post('/',function (req,res) {
res.send('abc');
res.end()
});
server.use('/',function (req,res) {//get/post都可以
res.send('123');
res.end()
});
server.listen(8989)
中间件:express-static
安装
npm i express-static
使用
const express= require('express');
const expressStatic = require('express-static')
var server = express();
server.listen(8989)
server.use(expressStatic(('./www')));
body-parser----》解析post数据
GET无需中间件
res.query
POST需要“body-parser”
ser
const express= require('express');
const bodyParse = require('body-parser');
var server = express();
server.listen(8989);
server.use(bodyParse.urlencoded({}));
server.use('/',function (req,res) {
// console.log(res)
console.log(res._body)//undefied,为什么?
// console.log(res.body())//body不是方法
console.log(res.body)//undefied,为什么?
//res.send(res);//Converting circular structure to JSON
res.send(res.body);
res.end()
});
body-parser的两个参数
extended:true
,//扩展模式
limit:2*1024k*1024M*1024G;
//限制,最多多大的post数据,默认100k,现在设置威2G
const express=require('express');
const bodyParser = require('body-parser');
var server = express();
server.listen(9999);
server.use(bodyParser,urlencoded({
extended:true,//扩展模式
limit:2*1024k*1024M*1024G; //限制,最多多大的post数据,默认100k,现在设置威2G
}));
//只能接收get数据
server.get('/',function(req,res){
console.log(req.query)
})
//只能接收post数据
server.post('/',function(req,res){
console.log(req.body)
})
//接收get数据或者post数据
server.use('/',function(req,res){})
链式操作
next下一步操作
const express=require('express');
const bodyParser = require('body-parser');//不常用
var server = express();
server.listen(9999);
server.use('/',function(req,res,next){
console.log('a');
next();//使用next(),不使用就不继续执行
});
server.use('/',function(req,res,next){
console.log('b')
});
const express=require('express');
const qurystring = require('querystring')
// const bodyParser = require('body-parser');
var server = express();
server.listen(8989);
/*server.use(bodyParser.urlencoded({
extended:true,//扩展模式
limit:2 * 1024 * 1024 * 1024 //限制,最多多大的post数据
}));*/
server.use(function(req,res,next){
var str = '';
req.on('data',function (da) {
str+=da
})
req.on('end',function () {
req.body = qurystring.parse(str)
next()
})
})
server.use('/',function(req,res){
//数据未丢失
console.log(req.body)
})
自己写中间件
my-body-parser.js
const qurystring = require('querystring')
module.exports=function(req,res,next){
var str = '';
req.on('data',function (da) {
str+=da
})
req.on('end',function () {
req.body = qurystring.parse(str)
next()
})
}
使用自定义的中间件
const express=require('express');
const bodyParser = require('./libs/my-body-parser');
var server = express();
server.listen(8989);
server.use(bodyParser);//不写这句,下面的打印将会是undefined
//接收get数据或者post数据
server.use('/',function(req,res){
console.log(req.body)
})