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

网站技术支持 新锐网络北京社保网上服务平台

网站技术支持 新锐网络,北京社保网上服务平台,公司门户网站该怎么做,wordpress拖拽式​#x1f308;个人主页#xff1a;前端青山 #x1f525;系列专栏#xff1a;node.js篇 #x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来node.js篇专栏内容:node.js- 全栈开发进阶篇 前言 大家好#xff0c;我是青山。在上一篇文章中#xff0c;… ​个人主页前端青山 系列专栏node.js篇 人终将被年少不可得之物困其一生 依旧青山,本期给大家带来node.js篇专栏内容:node.js- 全栈开发进阶篇 前言 大家好我是青山。在上一篇文章中我们从零开始学习了 Node.js 和 MongoDB 的基本概念并构建了一个简单的全栈应用。今天我们将在这些基础上更进一步探讨一些高级功能如路由、中间件、错误处理和安全性。通过这些内容你将能够构建更加健壮和安全的全栈应用。 目录 前言 二、路由管理 2.1 什么是路由 2.2 安装 Express 2.3 创建路由 2.4 代码解释 三、中间件 3.1 什么是中间件 3.2 日志中间件 3.3 代码解释 四、错误处理 4.1 错误处理中间件 4.2 代码解释 五、安全性 5.1 使用 Helmet 5.2 配置 Helmet 5.3 代码解释 六、总结 二、路由管理 2.1 什么是路由 路由是指根据不同的 URL 地址将请求分发到不同的处理函数。在 Node.js 中我们可以使用 Express 框架来简化路由管理。 2.2 安装 Express Express 是一个轻量级的 Web 框架可以帮助我们快速构建 Web 应用。首先我们需要安装 Express npm install express 2.3 创建路由 修改 index.js 文件引入 Express 并创建路由 // index.js const express require(express); const { MongoClient } require(mongodb);const app express(); const port 3000; const uri mongodb://127.0.0.1:27017; const client new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });app.use(express.json()); // 解析 JSON 请求体app.get(/, async (req, res) {try {await client.connect();console.log(Connected to MongoDB);const database client.db(myFirstDatabase);const collection database.collection(items);const query {};const cursor collection.find(query);if ((await cursor.count()) 0) {res.status(200).send(No items found);} else {const items await cursor.toArray();res.status(200).json(items);}} catch (err) {console.error(err);res.status(500).send(Internal Server Error);} finally {await client.close();} });app.post(/items, async (req, res) {try {await client.connect();console.log(Connected to MongoDB);const database client.db(myFirstDatabase);const collection database.collection(items);const newItem req.body;const result await collection.insertOne(newItem);res.status(201).json(result.ops[0]);} catch (err) {console.error(err);res.status(500).send(Internal Server Error);} finally {await client.close();} });app.listen(port, () {console.log(Server running at http://127.0.0.1:${port}); }); 2.4 代码解释 express.json()解析 JSON 请求体。app.get(/)处理 GET 请求返回所有项。app.post(/items)处理 POST 请求插入新项。 三、中间件 3.1 什么是中间件 中间件是处理请求和响应的函数它们可以执行任何操作如日志记录、身份验证等。中间件可以按顺序链式调用。 3.2 日志中间件 创建一个日志中间件记录每个请求的信息 // index.js const express require(express); const { MongoClient } require(mongodb);const app express(); const port 3000; const uri mongodb://127.0.0.1:27017; const client new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });// 日志中间件 app.use((req, res, next) {console.log(${new Date().toISOString()} - ${req.method} ${req.url});next(); });app.use(express.json()); // 解析 JSON 请求体// 路由 app.get(/, async (req, res) {try {await client.connect();console.log(Connected to MongoDB);const database client.db(myFirstDatabase);const collection database.collection(items);const query {};const cursor collection.find(query);if ((await cursor.count()) 0) {res.status(200).send(No items found);} else {const items await cursor.toArray();res.status(200).json(items);}} catch (err) {console.error(err);res.status(500).send(Internal Server Error);} finally {await client.close();} });app.post(/items, async (req, res) {try {await client.connect();console.log(Connected to MongoDB);const database client.db(myFirstDatabase);const collection database.collection(items);const newItem req.body;const result await collection.insertOne(newItem);res.status(201).json(result.ops[0]);} catch (err) {console.error(err);res.status(500).send(Internal Server Error);} finally {await client.close();} });app.listen(port, () {console.log(Server running at http://127.0.0.1:${port}); }); 3.3 代码解释 app.use((req, res, next) { ... })定义日志中间件记录请求的时间、方法和 URL。next()调用下一个中间件或路由处理函数。 四、错误处理 4.1 错误处理中间件 错误处理中间件用于捕获并处理应用程序中的错误。它们通常定义在所有路由之后。 // index.js const express require(express); const { MongoClient } require(mongodb);const app express(); const port 3000; const uri mongodb://127.0.0.1:27017; const client new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });// 日志中间件 app.use((req, res, next) {console.log(${new Date().toISOString()} - ${req.method} ${req.url});next(); });app.use(express.json()); // 解析 JSON 请求体// 路由 app.get(/, async (req, res) {try {await client.connect();console.log(Connected to MongoDB);const database client.db(myFirstDatabase);const collection database.collection(items);const query {};const cursor collection.find(query);if ((await cursor.count()) 0) {res.status(200).send(No items found);} else {const items await cursor.toArray();res.status(200).json(items);}} catch (err) {next(err); // 将错误传递给错误处理中间件} finally {await client.close();} });app.post(/items, async (req, res, next) {try {await client.connect();console.log(Connected to MongoDB);const database client.db(myFirstDatabase);const collection database.collection(items);const newItem req.body;const result await collection.insertOne(newItem);res.status(201).json(result.ops[0]);} catch (err) {next(err); // 将错误传递给错误处理中间件} finally {await client.close();} });// 错误处理中间件 app.use((err, req, res, next) {console.error(err.stack);res.status(500).send(Internal Server Error); });app.listen(port, () {console.log(Server running at http://127.0.0.1:${port}); }); 4.2 代码解释 next(err)将错误传递给错误处理中间件。app.use((err, req, res, next) { ... })定义错误处理中间件捕获并处理错误。 五、安全性 5.1 使用 Helmet Helmet 是一个 Express 中间件可以帮助你设置各种 HTTP 头以提高应用的安全性。首先安装 Helmet npm install helmet 5.2 配置 Helmet 在 index.js 文件中配置 Helmet // index.js const express require(express); const { MongoClient } require(mongodb); const helmet require(helmet);const app express(); const port 3000; const uri mongodb://127.0.0.1:27017; const client new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });// 配置 Helmet app.use(helmet());// 日志中间件 app.use((req, res, next) {console.log(${new Date().toISOString()} - ${req.method} ${req.url});next(); });app.use(express.json()); // 解析 JSON 请求体// 路由 app.get(/, async (req, res) {try {await client.connect();console.log(Connected to MongoDB);const database client.db(myFirstDatabase);const collection database.collection(items);const query {};const cursor collection.find(query);if ((await cursor.count()) 0) {res.status(200).send(No items found);} else {const items await cursor.toArray();res.status(200).json(items);}} catch (err) {next(err); // 将错误传递给错误处理中间件} finally {await client.close();} });app.post(/items, async (req, res, next) {try {await client.connect();console.log(Connected to MongoDB);const database client.db(myFirstDatabase);const collection database.collection(items);const newItem req.body;const result await collection.insertOne(newItem);res.status(201).json(result.ops[0]);} catch (err) {next(err); // 将错误传递给错误处理中间件} finally {await client.close();} });// 错误处理中间件 app.use((err, req, res, next) {console.error(err.stack);res.status(500).send(Internal Server Error); });app.listen(port, () {console.log(Server running at http://127.0.0.1:${port}); }); 5.3 代码解释 app.use(helmet())配置 Helmet设置各种 HTTP 头以提高安全性。 六、总结 通过本文我们深入探讨了 Node.js 和 MongoDB 的高级功能包括路由管理、中间件、错误处理和安全性。我们学会了如何使用 Express 框架来管理路由如何使用中间件来记录日志和处理错误以及如何使用 Helmet 来提高应用的安全性。 Node.js 和 MongoDB 的结合为我们提供了强大的全栈开发能力。希望本文能帮助你进一步提升 Node.js 和 MongoDB 的技能构建更加健壮和安全的全栈应用。 如果你有任何问题或建议欢迎留言交流。期待在未来的文章中继续与你分享更多技术知识。 希望这篇文章对你有所帮助如果有任何疑问或需要进一步的解释请随时联系我。祝你在全栈开发的道路上越走越远
http://www.dnsts.com.cn/news/246520.html

相关文章:

  • 网站开发的技术支撑 经验能力优化课程
  • 奉贤广州网站建设如何搭建网站
  • 商业网站建设案例课程 下载如何用织梦cms做网站
  • 进口跨境电商网站制作网站建设影音先锋网址
  • 莱州网站设计网站建设招标书组成
  • 成品网站怎么被百度收录python做网站php
  • DW做网站的步骤青岛网站建站团队
  • 优客工场 网站开发专业做网站的公司
  • 网站空间已过期建设网站首页
  • 淘宝网站做超链接android开发者官网
  • 淘宝买模板注浆做网站备案号放网站下面居中
  • 产品软文范例1000字苏州专业网站seo推广
  • 网站模糊效果wordpress删除修订版
  • 网站开发技术经理职责织梦网站英文版怎么做
  • 阿里云esc 可以做几个网站电子商务和市场营销的区别
  • 上线啦 图谱智能网站罗源县建设局网站
  • 如何注册网站域名备案济南软件网站建设
  • 做二手的网站都有哪些如何推销产品给客户
  • 百度网站自然排名优化做民宿的网站
  • 网站客户端制作cpa项目怎么做必须有网站么
  • 团购营销型网站制作百度收录最快的网站
  • 哪里可以做免费的物流网站2万一3万电动汽车
  • 婚恋网站设计有哪些比较好的外贸网站
  • 网站开发p6wordpress自适应高级图片主题
  • 石家庄建设网站的公司可以做装修效果图的网站有哪些
  • 网站用什么软件程序做织梦网站默认密码忘记
  • 微信怎么做捐钱的网站东莞网络推广营销公司
  • 顺德区网站设计网站免费正能量直接进入浏览器下载安装
  • 网站建设招标书组成婚纱网页制作
  • 设计师效果图网站修改wordpress 字体