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

【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.js
  uploads							文件夹 上传文件的存储位置
  	-**.jpeg
  api									api相关代码文件夹
    models						数据表的定义
      -product.js		
      -order.js
      -user.js
    routers						路由 api请求响应
      -products.js
      -orders.js
      -user.js
    middleware				中间件
      -check-auth.js
    controllers				路由 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.kler.cn/news/362602.html

相关文章:

  • VirtualBox虚拟机桥接模式固定ip详解
  • 报表工具怎么选?山海鲸VS帆软,哪个更适合你?
  • ArkTS 如何适配手机和平板,展示不同的 Tabs 页签
  • 安装vue发生异常: idealTree:nodejs: sill idealTree buildDeps
  • centOS部署Jenkins实现项目可持续自动化部署
  • Windows系统启动MongoDB报错无法连接服务器
  • Vertx实现和spring的application.yml自动配置加载
  • 基于Spring Boot的论坛网站:从零到部署
  • Pr 视频效果:自动重构
  • 【C++篇】探索STL之美:熟悉使用String类
  • 传感器驱动系列之PAW3212DB鼠标光电传感器
  • 网安加·百家讲坛 | 徐一丁:金融机构网络安全合规浅析
  • 云原生环境下的等保测评:构建新型安全防线的探索
  • ChatGPT实现旅游推荐微信小程序
  • XPM_CDC_PULSE
  • 安全见闻(7)——开阔眼界,不做井底之蛙
  • create-vite my-vite-uniapp-project
  • YOLO V3 网络构架解析
  • 群控系统服务端开发模式-程序草图设计
  • idea 开发插件
  • Maven入门到实践:从安装到项目构建与IDEA集成
  • gin入门教程(5):请求参数处理
  • stm32F103 实现呼吸灯效果
  • ubuntu 22.04网线连接无ip、网络设置无有线网界面(netplan修复)
  • 求最大公约数(c语言)
  • LINUX设备OTA时无法从HTTP服务器(TOMCAT)下载文件