2021-09-10 express、中间件、链式操作

本文介绍了如何在Node.js中安装并使用Express,涉及路由设置、非破坏式方法如res.send和res.end,以及静态文件管理和中间件的使用,包括body-parser解析POST数据。重点讲解了如何处理GET、POST请求和自定义中间件的实现。
摘要由CSDN通过智能技术生成

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)
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值