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

前言:

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

1. 接口全局拦截

  1. 新建一个文件intercept.ts,编写拦截过程
javascript 复制代码
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_token
    if(validate_token) {
        next()
    } else {
        // do something 可以是重定向等
        res.send()
    }
})

export default ssoRouter

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

  1. 项目启动文件app.ts中引入该文件,并注册到app中
javascript 复制代码
import express from 'express'
const app = express()

import interceptRouter from './router/intercept'

app.use(interceptRouter )

3. 环境变量设置

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

javascript 复制代码
{
  "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获取。如:

javascript 复制代码
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编码,否则浏览器直接访问会丢掉后面的路径。我也在这里碰到了巨坑~~
相关推荐
你真的可爱呀11 小时前
3.MySQL 数据库集成
mysql·node.js·express
你真的可爱呀12 小时前
4.前后端联调(Vue3+Vite + Express + MySQL)
mysql·node.js·vue·express
正经教主2 天前
【Trae+AI】和Trae学习搭建App_2.2.1:第4章·安卓APP调用Express后端实战1:前端调用后端
人工智能·学习·express
正经教主2 天前
【Trae+AI】和Trae学习搭建App_2.2.2:第4章·安卓APP调用Express后端实:2:网络请求工具封装(OkHttp3)
android·学习·app·express
雪域迷影8 天前
完整的后端课程 | NodeJS、ExpressJS、JWT、Prisma、PostgreSQL
数据库·postgresql·node.js·express·prisma
getapi8 天前
Express 是一个基于 Node.js 的轻量级、灵活的 Web 应用框架,广泛用于构建后端服务和 API
前端·node.js·express
Pu_Nine_99 天前
JavaScript后端日志系统:使用Winston构建专业日志
后端·express·日志·commonjs·winston
GISer_Jing11 天前
深入解析Node.js中间件:从Express到Nest
中间件·node.js·express
沟通QQ:48773927812 天前
探索Matlab/Simulink污水废水处理仿真基准模型BSM1
express
z***33512 天前
使用Node.js搭配express框架快速构建后端业务接口模块Demo
node.js·express