首页 > 编程语言 >node.js:中间件的使用

node.js:中间件的使用

时间:2022-10-29 12:11:36浏览次数:42  
标签:node 请求 res middleWare req 中间件 next js

node.js中间件是一种功能的封装方式,就是封装在程序中处理http请求的功能。当一个需求多地方用到时,中间件可以提高代码效率及页面简洁

那么如何使用中间件呢?

中间件的书写和接口差不多,但比接口多了一个next()函数,如果不加这个next()函数,中间件就会像一个黑洞一个,吞掉协议发过来的请求,程序到它这就断了,无法进入下一步。

中间件模板:

实例化模块.use((req, res, next) => {
    console.log('LOGGED111')//请求成功时会打印这句话
})

下面我们用中间件获取当前时间试一下:

middleWare.js:
const express = require('express') //引入模块
const middleWare = express() //实例化模块
const port = 8080 //端口号

//中间件 
middleWare.use((req, res, next) => {
    console.log('LOGGED111')
    //给req添加一个requestTime属性
    req.requestTime = Date.now();
    next();
});

//接口
middleWare.get('/test1', (req, res) => {
    res.send('get请求:' + req.requestTime)
});

middleWare.post('/test2', (req, res) => {
    res.send('post请求:' + req.requestTime)
});


//监听端口 
middleWare.listen(port, () => {
    //监听成功打印以下语句
    console.log(`Example app listening on port ${port}`)
})

终端运行服务,访问接口:

访问成功,终端打印:LOGGED111

我们经常遇到的跨域问题也可以写在中间件里:

middleWare.use((req, res, next) => {
    console.log('LOGGED111')
    //中间件解决跨域问题
    res.header("Access-Control-Allow-Origin","*");         //允许跨域的域名 *代表允许任意域名跨域
    res.header("Access-Control-Allow-Headers","Content-Type");    //请求的头部 允许header的类型
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");  //跨域允许的请求方式
    if(res.method == 'OPTIONS') res.sendStatus(200);//让OPTIONS尝试请求快点结束
    else next();
    
})

这样就不用每个地方都请求跨越啦~

 

标签:node,请求,res,middleWare,req,中间件,next,js
From: https://www.cnblogs.com/xz1005xfx/p/16838426.html

相关文章

  • 【JS】面向对象-继承-私有和受保护的属性和方法
    在面向对象的编程中,属性和方法分为两组:内部接口——可以通过该类的其他方法访问,但不能从外部访问的方法和属性。外部接口——也可以从类的外部访问的方法和......
  • js一
    浏览器API文档对象模型API:DOM(DocumentObjectModel)API,能通过创建,修改,移除HTML,为页面动态应用新样式等手段来操作HTML和CSS;地理位置API(GeolocationAPI)获取地理信息......
  • 【POI2011】Lightning Conductor_【JSOI2016】灯塔(决策单调性优化dp)
    首先进行变形:\[\begin{aligned}a_j&\leqa_i+p-\sqrt{|i-j|}\\p&\geq\max_{j=1}^n\left(a_j+\sqrt{|i-j|}\right)-a_i\end{aligned}\]把\(|i-j|\)拆为\(\max(i-j......
  • 如何通过node.js(express)写接口
    准备工作:在开始项目之前确保自己的计算机已经安装了 Node.js【node.js下载地址:https://nodejs.org/en/】一、创建项目打开文件夹,在想要的位置为项目新建一个目录文件,c......
  • 【JS】静态属性和方法
    静态方法和属性:      1.静态方法:        将一个方法作为整体赋值给类,该方法作为类的方法使用,而不是某个实例的方法使用,使用static关键字修......
  • (文件操作)读入"price2016.json"文件中数据,然后将转换为二维数据在于data列表中,最后显示
    样例输出[['同比','城市','定基','环比'],['120.7','北京','121.4','101.5'],['127.3','上海','127.8','101.2'],['119.4','广州......
  • 前端利用jsencrypt.js进行RSA加密、解密
    RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制 。在公开密钥密码体制中,加密密钥(即公开密钥)PK是......
  • 从0快速部署云托管服务:node.js
    欢迎使用微信云托管,本文将带领你通过微信云托管创建一个服务,并在小程序和WEB端调用此服务(以Node.JS为例),本系列会继续更新Java、PHP、Golang等其他语言的部署教程(当然......
  • JS中搜索数组的四种方法
    前端经常要通过javaScript来处理数组中的数据,其中就包括检查数组中是否包含满足特定搜索条件的单个或者多个值,这就需要我们关于用于确认的布尔值、数组中值得位置索引或包含......
  • js promise概念
    Promise构造函数接受一个函数作为参数。该函数的两个参数分别是resolve和reject,它们是两个函数,由JavaScript引擎提供,不用自己部署。//代码resolve函数的作用:将Promi......