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

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (三):Cors的设置及.env文件的设置

本项目旨在学习如何快速使用 nodejs 开发后端api,并为以后开展其他项目的开启提供简易的后端模版。(非后端工程师)
由于文档是代码写完之后,为了记录项目中需要注意的技术点,因此文档的叙述方式并非开发顺序(并非循序渐进的教学文档)。建议配合项目源码node-mongodb-template 。

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (一):项目简介及安装依赖

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (二):项目文件夹架构及路由的设置

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (三):Cors的设置及.env文件的设置

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (四):状态码的使用

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (五):POST上传文件的设置

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (六):token的设置

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (七):MongoDB的设置

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (八):API说明(暂时完结,后续考虑将在线版mongoDB变为本地版)

Cors的设置

跨域资源共享

app.js增加如下代码

//app.js
app.use((req,res,next)=>{res.header("Access-Control-Allow-Origin", "*");res.header("Access-Control-Allow-Headers","Origin,X-Requested-With,Content-Type,Accept,Authorization");if(req.method === "OPTIONS"){req.header("Access-Control-Allow-Methods", "PUT,POST,DELETE,PATCH,GET");return res.status(200).json();}next();
})

res.header("Access-Control-Allow-Origin", "*"); 标识允许那个域,*比较粗暴,表示全部都允许。

.env文件的设置

存储环境变量的文件,可以借助依赖dotenv文件夹。

  • 安装依赖

pnpm i --save dotenv

  • 引用依赖

注意:1、在app.jsserver.js文件中引用依赖;2、必须写在所有引用的最上方

//app.js
require("dotenv").config();
...
  • .env文件内容

MONGO_ATLAS_PW 指 在线mongoDB的连接密码

JWT_KEY JSON Web Token(JWT)密码管理key

MONGO_ATLAS_PW=***
JWT_KEY=***  
  • 变量使用

在线mongoDB的连接

mongoose.connect('mongodb+srv://db:'
+process.env.MONGO_ATLAS_PW
+'@test.gx6wc.mongodb.net/?retryWrites=true&w=majority&appName=test');mongoose.Promise = global.Promise;

密码加密与校验

const token = jwt.sign({email:user[0].email,userId:user[0]._id
},process.env.JWT_KEY,{expiresIn:"1h",
});
const decoded = jwt.verify(token,process.env.JWT_KEY);
http://www.lryc.cn/news/467713.html

相关文章:

  • [python flask 数据库ORM操作]
  • 【JavaScript】如何优雅的编码if判断中的一个变量多个或条件
  • SaaS云诊所系统源码,基于云计算技术的SAAS模式诊所管理系统,适用于诊所、门诊、卫生服务站、卫生站
  • 字节,AI产品经理面试,拿下offer!
  • Postgresql pgsql 插件之postgis 安装配置
  • 单片机STC8H8K64U开发板_RA6809开发板 驱动彩屏显示
  • Redis底层和缓存雪崩,击穿,穿透
  • [Java基础] 集合框架
  • 机器学习基础:算法如何让 AI 自我学习
  • 25届字节跳动 抖音NLP算法工程师 面经
  • 转行网络工程师以后的就业前景如何?
  • docker 和 containerd 关系
  • 算法-二叉树的最大路径和
  • 解决url含%导致404错误
  • [Linux Codec驱动]音频路由概念
  • 母线槽温度监测的哪个部位?安科瑞母线槽测温解决方案-安科瑞黄安南
  • 《深度学习》—— 模型的部署
  • 多IP访问浏览器
  • 1024程序员节福利放送 | AI 照片修复魔法,一键重拾旧时记忆
  • OSPF特殊区域及其他特性
  • 动态量化:大模型在端侧CPU快速推理方案
  • 什么是零拷贝以及其应用场景是什么?
  • 开源(open source)是什么?为什么要开源?
  • 基于Spring Boot的论坛网站:从零到部署
  • vue开发的一个小插件vue.js devtools
  • GraphLLM:基于图的框架,通过大型语言模型处理数据
  • HarmonyOS 5.0应用开发——Navigation实现页面路由
  • 物联网行业应用实训室建设方案
  • SOLIDWORKS 2025更灵活零件建模
  • 智能巡检机器人的大模型训练