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

本项目旨在学习如何快速使用 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变为本地版)

项目文件的架构

通常文件架构是在开发过程中,逐步完善的,但是也可以直接确定架构后,按照模版的进行开发。

-** 表示文件;**表示文件夹

这里仅展示手动创建且会修改的文件及文件夹

项目文件夹(根目录)-package.json 			配置文件 pnpm i 会自动生成-gitignore 					git操作会忽略的文件-.env								环境变量的配置 结合dotenv依赖使用-app.js							全局变量、路由的配置等-server.js					启动文件 常规启动 终端node server.jsuploads							文件夹 上传文件的存储位置-**.jpegapi									api相关代码文件夹models						数据表的定义-product.js		-order.js-user.jsrouters						路由 api请求响应-products.js-orders.js-user.jsmiddleware				中间件-check-auth.jscontrollers				路由 api请求响应的回调-products.js-orders.js-user.js

这里需要说明的是

controllers文件夹下的内容是从routers中提取出来的,目的是为了代码的可读性。

middleware中会放入多处经常需要使用的中间件。

路由的设置

localhost:3000/products 为例,新建文件夹routers, 然后在文件夹中新建文件products.js

//products.js
const express = require('express');
const router= express.Router();
//注意,这里使用的是 /
router.get('/',(req,res,next) => {});router.get('/:productId',(req,res,next) => {});//暴露
module.exports = router;

在文件app.js中引用该文件。

const express = require('express');;
const app = express();
//引用并使用products
const productsRoutes = require('./api/routers/products');
//注意这里是/products,此时如果需要查看productsAPI就需要访问地址localhost:3000/products/
app.use('/products',productsRoutes);module.exports = app;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/56394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

九州未来亓绚亮相丽台Solution Day 2024,共建AI赋能教育新时代

在数字化浪潮席卷全球的当下,生成式人工智能正迅速渗透至数字世界的每一个角落,而AI技术的物理化应用也正成为新的趋势。10月22日,丽台解决方案日Solution Day 2024:物理AI推动行业数字变革在上海绿地外滩中心顺利举行。 大会聚焦…

SpringBoot项目整合Mybatis-MySql数据库编程

1.Mybatis-MySql 话不多说-直接上代码&#xff01; 1. 数据库编程的依赖 <!-- Mybatis整合Spring Boot的依赖项 --> <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><…

报表工具怎么选?山海鲸VS帆软,哪个更适合你?

概述 在国产报表软件市场中&#xff0c;山海鲸报表和帆软这两款工具都占有一席之地&#xff0c;许多企业在选择报表工具时常常在它们之间徘徊。然而&#xff0c;随着企业对数据分析需求的不断增长和复杂化&#xff0c;如何选取一款高效、易用且性价比高的报表工具&#xff0c;…

HTML、CSS 和 JavaScript 的介绍

HTML、CSS 和 JavaScript 是网页设计的核心技术组合,以下是关于它们在网页设计中的介绍: 一、HTML(超文本标记语言) 结构基础 HTML 负责构建网页的结构和内容。它使用各种标签来定义网页的不同部分,如 <html>、<head>、<body> 等。例如,<h1> 到…

“摄像机”跟随及攻击抖动实现

学习Unity的摄像机功能&#xff0c;可以帮助我们实现摄像机对人物的跟随移动&#xff0c;还可以使用这个工具自带的插件&#xff0c;摄像机震动&#xff0c;颤动&#xff0c;增强打击感&#xff1b; 首先来安装一下这个插件&#xff0c;window菜单--packageManage--左上角Unit…

vcpkg 从清单文件安装依赖项

vcpkg 有两种运行模式&#xff1a;经典模式和清单模式。清单文件有自己的 vcpkg_installed 目录&#xff0c;可在其中安装依赖项&#xff0c;与所有包都安装在通用 %VCPKG_ROOT%/installed 目录中的经典模式不同。 因此&#xff0c;每个项目都可以有自己的清单和自己的一组依赖…

R语言机器学习算法实战系列(十)自适应提升分类算法 (Adaptive Boosting)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍原理步骤教程下载数据加载R包导入数据数据预处理数据描述数据切割调节参数构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性保存模型总…

生发产品哪个效果最好?油秃头秋冬季养发搭子

如果你是大额头 或者 M型发际线&#xff0c;无论是天生的 亦或者是后天造成的&#xff0c;养发防脱一定要重视起来&#xff0c;因为防脱育发是需要循序渐进坚持的&#xff0c;今天就给大家分享一下几个特别有效的育发液&#xff0c;选对产品养发那真是稳了~ 1、露卡菲娅防脱育发…

2024前端html5,css3面试题总汇

1.XML&#xff0c;HTML&#xff0c;XHTML区别⭐ XML&#xff1a;XML是一个可扩展标记语言&#xff0c;主要是用来存储&#xff0c;传输数据的&#xff0c;并非显示数据&#xff0c;可以用来标记数据&#xff0c;定义数据类型&#xff0c;允许用户对自己的标记语言进行定义&…

RabbitMQ 消息处理问题全解

在使用 RabbitMQ 进行消息队列通信时&#xff0c;可能会遇到消息丢失、乱序、重复消费等问题。这些问题如果不加以妥善处理&#xff0c;可能会导致系统出现数据不一致、业务逻辑错误等严重后果。本文将详细探讨 RabbitMQ 中这些问题的产生原因以及解决方案&#xff0c;并提供丰…

深度学习:Sigmoid函数详解

Sigmoid函数详解 Sigmoid函数是一个广泛应用于神经网络中的激活函数&#xff0c;尤其是在早期的神经网络模型中。其数学表达式如下&#xff1a; [ σ ( x ) 1 1 e − x \sigma(x) \frac{1}{1 e^{-x}} σ(x)1e−x1​ ] 主要特点 输出范围&#xff1a; Sigmoid函数的输出…

Unity之XR Interaction Toolkit 射线拖拽3DUI

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、想实现的功能二、实现原理1.UI挂在XRGrabInteractable、刚体、BoxCollder2.修改刚体属性3.加BoxCollder 总结 前言 VR项目里正常情况有放置两种3DUI的方式…

如何在 HarmonyOS NEXT 中使用 @Builder 装饰器优化 UI 组件的复用?

摘要 在鸿蒙 NEXT 开发中&#xff0c;Builder 装饰器是一种轻量级的 UI 元素复用机制&#xff0c;它允许开发者将重复使用的 UI 元素抽象成一个方法&#xff0c;并在 build() 方法中多次调用&#xff0c;以实现 UI 结构的复用。以下是如何使用 Builder 装饰器来优化 UI 组件复…

Ovis: 多模态大语言模型的结构化嵌入对齐

论文题目&#xff1a;Ovis: Structural Embedding Alignment for Multimodal Large Language Model 论文地址&#xff1a;https://arxiv.org/pdf/2405.20797 github地址&#xff1a;https://github.com/AIDC-AI/Ovis/?tabreadme-ov-file 今天&#xff0c;我将分享一项重要的研…

关于使用 C# 处理水位数据多种格式的统一转换

关于使用 C# 处理水位数据多种格式的统一转换 1、前言2、水位数据的多种格式3、水位数据多种格式的统一转换程序展示4、水位数据多种格式的统一转换 C# 代码4.1、声明引用命名空间4.2、多种格式的统一转换 C# 代码4.3、多种格式的统一转换 C# 代码&#xff0c;文件输出保存 1、…

Django进一步掌握(10月22日)

一、请求响应对象 请求对象request 响应对象HttpResponse 二、HttpResponse常用属性 status设置HTTP响应状态码 status_code查询HTTP响应状态码 content_type设置响应的类型 write()写入响应内容 三、重定向 1、实现URl访问的重定向 &#xff08;1&#xff09;使用Ht…

【尊享面试100题】数组/字符串

多看优秀的代码 1.数组列表中的最大距离2.字符串的左右移3.相隔为1的编辑距离4.形成字符串的最短路径5.连接二进制表示可形成的最大数值 1.数组列表中的最大距离 给定 m 个数组&#xff0c;每个数组都已经按照升序排好序了。 现在你需要从两个不同的数组中选择两个整数&#…

微知-Lecroy力科的PCIe协议分析仪型号命名规则(PCIe代,金手指lanes数量)

文章目录 要点主要型号命名规则各代主要产品图片Summit M616 协议分析仪/训练器Summit T516 分析仪Summit T416 分析仪Summit T3-16分析仪Summit T28 分析仪 综述 要点 LeCroy(力科)成立于1964年&#xff0c;是一家专业生产示波器厂家。在美国纽约。一直把重点放在研制改善生产…

Hallo2 长视频和高分辨率的音频驱动的肖像图像动画 (数字人技术)

HALLO2: LONG-DURATION AND HIGH-RESOLUTION AUDIO-DRIVEN PORTRAIT IMAGE ANIMATION 论文&#xff1a;https://arxiv.org/abs/2410.07718 代码&#xff1a;https://github.com/fudan-generative-vision/hallo2 模型&#xff1a;https://huggingface.co/fudan-generative-ai/h…

TikTok营销实用技巧与数据分析工具:视频洞察

TikTok凭借其独特的机制和庞大的流量&#xff0c;成为了众多品牌和卖家对产品进行宣传推广的必要平台之一。要在TikTok上优化营销效果、提升推广效率&#xff0c;可以使用平台提供的重要工具——视频洞察&#xff08;Video Insights&#xff09;。 一、视频洞察功能与技巧 视频…