用过express 的开发者,想必一定用过中间件。本文就说一下自定义的中间件。

一,先看下中间件的使用。

1访问文件的中间件 express-static

const express = require("express");
const expressStatic = require("express-static");var app = express();
app.listen(8080);// 当访问接口的时候,会走下面的操作
// 比如 http://localhost:8080/login?name=zhangsan&age=18
app.get("/login", function (req, res) {console.log(req.query);res.send({ok: false, msg: '信息'})
})
// 当访问文件的时候,会走下面的操作
// 比如 http://localhost:8080/a.html
app.use(expressStatic('./www'));

2 处理post 请求,请求数据的处理中间件 body-parser

const express = require('express');
const bodyParser = require('body-parser');var app = express();
app.listen(8080);app.use(bodyParser.urlencoded({extended: false,limit: 2*1024*1024
}))app.use("/login", function (req, res) {console.log("body", req.body);
})

如果不用中间件的话,post 请求过来的数据是要自己去处理的,那么使用了中间件后,就会很方便的拿到请求参数。

总的来说中间件的使用就是

app.use(fn); //中间件的函数
app.use("地址", function (req, res) {// 业务
})

二,自己开发中间件

1 链式操作

app.use("/", function (req, res, next) {console.log("AAAA");next();
})
app.use("/", function (req, res, next) {console.log("BBBB");
})

这样写的话 控制台会先后输出

AAAA

BBBB

那么只要在写 AAAA的地方做一些处理,那么在BBBB里面就可以直接使用AAAA的处理结果。

看下 Express 4.x 的官网

可以可以看到 use 的参数可以只传一个函数体,那么中间件的函数定义就是在这里。

2 自己定义一个post 处理中间件。

const express = require('express');
const querystring = require('querystring');
var app = express();app.listen(8080);app.use(function (req, res, next) {var str = "";req.on("data", function (data) {str += data;});req.on("end", function () {// 把数据绑定到 req 对象上,然后在后面就能够使用req.body = querystring.parse(str);next();})
})
app.use("/", function (req, res, next) {console.log("拿到数据", req.body)
})

NodeJs express自定义中间件相关推荐

  1. nodejs框架express之中间件的运用场景(初学)

    nodejs框架express之中间件的运用场景(初学) //引入express框架 const express = require('express'); //创建网站服务器 const app = ...

  2. NodeJS+Express+mySQL服务端开发详解

    NodeJS+Express+mySQL服务端开发详解 随着NodeJS的发展,现在已经被很多人熟知,NodeJS已经成为了前端开发人员必备的技能.本文不会对NodeJS过多介绍 如果你感兴趣可以访问 ...

  3. nodejs express use 传值_再也不怕面试官问你express和koa的区别了

    前言 用了那么多年的express.js,终于有时间来深入学习express,然后顺便再和koa2的实现方式对比一下. 老实说,还没看express.js源码之前,一直觉得express.js还是很不 ...

  4. Day 73 Npm包管理 +Express+路由+中间件

    三.npm包管理 1.介绍 npm是NodeJs项目模块管理工具,它已经集成了nodejs安装包中(自5.2以后新增了npx指令用于解决调用项目内部安装的模块繁琐的问题),使用npm可以实现从NPM服 ...

  5. node.js服务端笔记文档学会写接口,学习分类:path、包、模块化、fs、express、中间件、jwt、开发模式、cors。

    node.js 学习笔记 node.js服务端笔记文档学会写接口,path.包.模块化.fs.express.中间件.JWT.开发模式.cors. gitee:代码接口笔记 1什么是node.js n ...

  6. nodejs + express + multiparty处理上传文件接口:踩坑及总结

    文章目录 一.简单的文件上传 模块 接口 二.multipart/form-data随着表单上传文件 前端 后端 1. multiparty 2.connect-multiparty 在平时工作和自己 ...

  7. windows下nodejs express安装及入门网站,视频资料,开源项目介绍

    windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件 下载地址 ...

  8. nodejs ajax进度条,Ajax异步文件上传与NodeJS express服务端处理的示例分析

    Ajax异步文件上传与NodeJS express服务端处理的示例分析 发布时间:2021-07-24 11:17:21 来源:亿速云 阅读:79 作者:小新 这篇文章主要介绍Ajax异步文件上传与N ...

  9. Vue + Nodejs + Express 解决跨域的问题

    Vue + Nodejs + Express 解决跨域的问题 首先检测你的Vue的版本号 此文章针对3.0版本解决跨域问题 $ vue -V 2.X or 3.X 直接访问如下 created() { ...

最新文章

  1. 2014-03-11 Spring的学习(3)------面向切面编程(AOP)
  2. 第二次作业(软件工作量的估记方法)
  3. 事业单位招 计算机面试实践技能操作,2019山东事业单位卫生类招聘面试实践技能概论...
  4. 基于TensorFlow的2个机器学习简单应用实例
  5. PHP PDO(mysql) 封装类
  6. 比navicat还好用的mysql可视化工具
  7. 验证码错误的可能问题
  8. Google jib插件的使用
  9. 如何设计H5编辑器中的模版库并实现自动生成封面图
  10. 硬盘柱面损坏怎么办_硬盘在坏道检测中出现了要多少个损坏柱面才说明这个硬盘废了?...
  11. 菜鸡随笔第二笔:insmod模块时显示已杀死
  12. python解一元二次方程虚根_Python编程实现数学运算求一元二次方程的实根算法示例...
  13. 介绍一个“王者”算法,它能认出游戏里的所有英雄
  14. 微信多开软件苹果版_微信最新PC版 无限多开以及消息防撤回
  15. Android 友盟统计集成
  16. final可以修饰些什么
  17. git忽略已加入版本控制的文件
  18. 插入排序基本思路与算法
  19. 计算机毕业设计之java+ssm基于android的家庭理财系统app
  20. day9-字符串作业

热门文章

  1. rad linux下安装mysql_Linux(CentOS或RadHat)下MySQL源码安装
  2. [转载] Python基础之类型转换与算术运算符
  3. c语言if else语句_查找C程序的输出(如果为else语句)| 设置1
  4. php整合支付宝,Thinkphp5.0整合支付宝在线下单
  5. java结构设计_Java基本的程序设计结构(一)
  6. fakeapp2.2.0下载_软件下载 | SuperCuger 测量平差系统 V1.0
  7. 湖南工业大学在线计算机作业答案,湖南工业大学《计算机组成原理》试题集,共7份,有部分答案...
  8. java 的io流需要学吗_Java Io流怎么学习呢?
  9. Java BigDecimal toString()方法与示例
  10. 聊一聊开发常用小工具