nodeJS+express搭建后台服务,node写后台接口
确保电脑已安装node.新建个文件夹,准备存放服务文件,打开文件夹,按住shift右键快捷打开powershell窗口,执行命令
npm i express
然后依赖文件就安装好了

新建serve文件夹,里面建几个文件
db.js --------数据库配置 index.js -----express服务实例,也是引导文件,对服务进行总体配置 api.js ------编写接口
db.js
// 数据库配置 module.exports = { mysqlInfo:{ // 本地用这个 host:'127.0.0.1', user:'root', // 线上切换成这个 // host:'', // user:'', password:'', port:'3306', database: 'dashijian', // 要连接的数据库名称 connectTimeout: 5000, //连接超时 multipleStatements: false //是否允许一个query中包含多条sql语句 } }
index.js
const userApi = require('./api.js') // 接口文件
const bodyParser = require('body-parser')// 配置解析表单的中间件
const express = require("express")
const cors = require('cors')// 一定在路由前配置cors这个中间件,用来解决跨域问题
//const router = require('./sqlMap.js')// 导入路由
const app = express()// 创建express的服务器实例
app.all("*",function(req,res,next){
//设置允许跨域的域名,*代表允许任意域名跨域
res.header("Access-Control-Allow-Origin","*");
//允许的header类型
res.header("Access-Control-Allow-Headers","content-type");
//跨域允许的请求方式
res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
if (req.method.toLowerCase() == 'options')
res.sendStatus(200); //让options尝试请求快速结束
else
next();
})
app.use(cors())
.use(bodyParser.urlencoded({extended: false}))
.use(bodyParser.json())
.use('/assets',express.static('../assets'))
.use('/api',userApi)
.listen(8081, function (){
console.log('服务器启动')
})
api.js
const modules = require('./db.js')
const mysql = require('mysql')
const multer = require('multer')
const express = require('express')
const router = express.Router()
// 本地地址
const BASE_URL = 'http://127.0.0.1:8081'
// 连接数据库
const conn = mysql.createConnection(modules.mysqlInfo)
conn.connect()
// 格式化返回数据
let jsonWrite = function (res, ret) {
if (typeof ret === 'undefined') {
res.json({
code: '1',
msg: '操作失败'
})
} else {
res.json(ret)
}
}
let upload = multer({
storage: multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '../assets/newsList');
},
filename: function (req, file, cb) {
var changedName = (new Date().getTime())+'_'+file.originalname;
cb(null, changedName);
}
})
});
// 文件上传并将路径保存到数据库
router.post('/addEvent', upload.any(), (req, res,next) => {
const { body, files } = req
console.log(files)
let file = req.files
let name = req.body.name || ''
for(let i = 0; i<file.length; i++){
let path = file[i].path.replace(/\\/g,'/')
let sql = `INSERT INTO image (name,picname,path) VALUES ("${name}", "${file[i].originalname}", "${path}")`
conn.query(sql,(err,result)=>{
if(err) throw err
})
}
res.json({
fileList: file
});
})
// 获取所有数据
router.get('/get', (req,res) => {
let sql = 'SELECT * FROM test'
conn.query(sql, (err, result) => {
if(err) throw err
jsonWrite(res, result)
})
})
也可以将全部sql写在一个文件里,然后引用就可以了,因为是测试接口,就简单写了个大概,然后你数据库里建一些东西,试试能不能查出来,如果可以,就说明接口是通的,没有问题
