当前位置: 首页 > news >正文

nodejs+express接口全局拦截和环境变量设置

前言:

本例中必须安装的依赖包有:expresscookie-parser(可以没有)

1. 接口全局拦截

  1. 新建一个文件intercept.ts,编写拦截过程
import express from "express";
import cookieParser from 'cookie-parser'const ssoRouter = express.Router()ssoRouter.use(cookieParser())ssoRouter.all('/*', function(req:any, res:any, next:any) {let validate_token = req.cookies?.validate_tokenif(validate_token) {next()} else {// do something 可以是重定向等res.send()}
})export default ssoRouter

注册一个全局的.all('/*')接口,进行全局拦截。这里面可以写任意你需要进行权限校验、参数校验等的方法。校验正确就会继续执行,校验出现错误就会按照你所设定的方法执行。

  1. 项目启动文件app.ts中引入该文件,并注册到app中
import express from 'express'
const app = express()import interceptRouter from './router/intercept'app.use(interceptRouter )

3. 环境变量设置

这里主要指在nodejs后台项目中设置环境变量。设置方法为:在package.json文件中,在script标签中的启动命令后面添加et NODE_ENV=development,如:

{"name": "name","version": "1.0.0","description": "","scripts": {"dev:live": "set NODE_ENV=development && nodemon ./src/app.ts"},
}

运行npm run dev:live命令,环境变量就可以生效。你可以可以设置将NODE_ENV改为其它的值或其它的变量名做尝试。

在nodejs后台项目中,获取环境变量的方法可以通过process.env.NODE_ENV获取。如:

const env = process.env.NODE_ENV as string
const envUrl:Record<string,string> = {'production': 'https://xxx.com/#/index','development': 'https://xxx-dev.com/#/index','test': 'https://xxx-sit.com/#/index'
}
let redirectUrl = encodeURIComponent(envUrl[env.trim()])

如上,通过process.env.NODE_ENV获取了环境变量,并赋值给env变量;envUrl中定义了三种环境下的系统访问地址,包括production、development和test;通过encodeURIComponent(envUrl[env.trim()])对系统地址编码。注意:

  • env一定要调用.trim()方法去掉前后空格,我就是因为没有去空格一直从对象种获取不到正确的值,调试了好久…
  • 取到的地址一定要使用encodeURIComponent编码,否则浏览器直接访问会丢掉后面的路径。我也在这里碰到了巨坑~~
http://www.lryc.cn/news/229709.html

相关文章:

  • 深度学习之基于YoloV5的目标检测和双目测距系统
  • 如何显示标注的纯黑mask图
  • 【算法每日一练]-图论(保姆级教程 篇1(模板篇)) #floyed算法 #dijkstra算法 #spfa算法
  • c语言数据结构---十字链表
  • 使用python电脑轻量级控制手机—adb命令和手机投屏
  • VBA技术资料MF82:替换文件夹中文件名中的字符
  • 如何利用大模型蒸馏出小模型实现降本
  • CentOS 中启动 Jar 包
  • 法治智能起航 | 拓世法宝AI智慧政务一体机重塑法治格局,开启智能司法新篇章
  • 【华为云IaaS基础三件套之----计算ECS、网络EIP、存储EVS】
  • c语言数据结构---广义表
  • 2023.11.12使用flask对图片进行黑白处理(base64编码方式传输)
  • MATLAB中Filter Designer的使用以及XILINX Coefficient(.coe)File的导出
  • js 深度学习(四)
  • leetcode刷题日记:121. Best Time to Buy and Sell Stock( 买卖股票的最佳时机)
  • Mac 本地部署thinkphp8【部署环境以及下载thinkphp】
  • 【汽车电子】CAN总线分析仪使用介绍(PCAN/同星CAN卡)
  • C //例 7.13 有一个3*4的矩阵,求所有元素中的最大值。
  • 基于SSM的供电所档案管理系统
  • excel用RAND函数生成一个大于0小于1的随机数
  • 详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议
  • mysql使用--数据库的基本操作
  • 计算机毕业设计选题推荐-个人记账理财微信小程序/安卓APP-项目实战
  • 如何利用IP代理进行海外推广?
  • 使用FFmpeg转封装为hls(m3u8)流
  • npm install导致的OOM解决方案
  • HTTP和HTTPS详解
  • 设计模式之模版方法(TemplateMethod)
  • 为什么数据安全很重要?哪些措施保护数据安全?
  • git push 操作代码回退