# gods_plan_server **Repository Path**: flowers-11/gods_plan_server ## Basic Information - **Project Name**: gods_plan_server - **Description**: 基于nodejs和express开发的后端服务器,用于个人博客的后台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2022-04-19 - **Last Updated**: 2024-09-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: Nodejs, Express, MySQL ## README # God's_plan_serve --- [toc] ## 开发的步骤及心路历程 ### 开发步骤1:在目录下安装 express 依赖包 npm istall express ### 开发步骤2:新建app.js文件 app.js: ```js // 引入express模块 const express = require('express') // 创建服务器 var app = express() // 监听端口 app.listen(8080, () => { console.log('服务器启动!') }) ``` ### 开发步骤3:静态托管 新建public文件夹 app.js ```js // 静态托管 app.use(express.static('public')) ``` 在文件夹里可以放静态资源 可以通过直接在http协议中添加文件名字直接访问静态资源: 例:http://127.0.0.1:8080/user_reg.html ### 开发步骤4:创建连接池 注意:一般连接池要放在路由器前 pool.js ``` // 导入mysql依赖 const mysql = require('mysql') // 创建连接池 const pool = mysql.createPool({ host:'127.0.0.1', database:'mydb', user:'root', password:'root', connectionLimit:20, port:3306 }) // 导出连接池 module.exports = pool ``` ### 开发步骤5:声明路由器对象,并引入连接池 app.js: ```js // 引入路由器 const userRouter = require('./routes/user') const indexRouter = require('./routes/index') // 使用路由器 app.use('/user', userRouter) app.use('', indexRouter) ``` /routes/index.js ``` // 引入express模块 const express = require('express') // 声明路由器对象 var router = express.Router() // 添加路由 router.get('',(req,res) => { res.send('欢迎登录首页') }) // 导出路由器 module.exports = router ``` ### 开发步骤6: 使用body-parser中间件,解析post传递的值并把它变成对象 app.js ``` js // 引入body-parser中间件 const bodyParser = require('body-parser') // 使用body-parser中间件 app.use(bodyParser.urlencoded({ extended:false //不使用第三方的qs模块,而是使用核心模块querystring来解析查询字符串为对象 })) ``` ## 使用方法: ##### 从Git上下载后,先安装express和mysql的依赖 npm install express npm install mysql ##### 然后在当前目录下输入cmd命令 node /app.js ##### cmd返回 “服务器启动!” 即表示服务器成功启动了 ## 部署方法: 8分钟部署 ##### https://www.bilibili.com/video/BV1aV411n7SH?spm_id_from=333.999.0.0 ## 开发进程: ### 1.0.0 #### 1、给服务器设置跨域 在app.js中使用中间件对请求头做处理 记得要放在路由前才可以生效 ```js // 跨域 app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild'); res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS"); res.header("X-Powered-By", ' 3.2.1') //这段仅仅为了方便返回json而已 res.header("Content-Type", "application/json;charset=utf-8"); if(req.method == 'OPTIONS') { //让options请求快速返回 res.sendStatus(200); } else { next(); } }); ``` #### 2、给bodyParser中间件开启解析 ```js // 因为node后端默认只能接受100kb,将其扩大下,base64需要传递 app.use(bodyParser.json({ limit: "100mb" })); app.use(bodyParser.urlencoded({ limit: "100mb", extended: true })); // 对body中数据进行解析,需放在路由中间件之前 app.use( express.urlencoded({ extended: true, }) ); ``` ### 1.0.1 1. 开发路由 :/gods_plan_server/routes/user.js 接口:/user/login 2. 静态资源存储 /public中放入了images 和videos 文件夹 3. 新增uploadImage路由 通过接口获取用户上传的图片文件,并且在public文件夹下更新图片保存,返回URL给前端(/img) 4. 新增index.js路由 获取录像带(/video) 根据id和typeid查询,不输入查询所有文章,输入偏移量和数量可翻页查询(/article) 保存文章(/saveArticle) 获得文章类型(/getArticleType) 添加文章类型(/addArticleType) 删除文章(/deleteArticle) 编辑文章(/editArticle) 获得文章总数(/getArticleTotal)