本节:1.文件上传的路由中间件,2.博客分类的增删查改,3.博客文章的增删查改接口,
4.进行一个token的封装,token的一个标识符,这样就不用每一个接口都写一堆一样的token校验了,只需要在路径上加上一个标识符就可以了。
一、写一个文件上传的路由中间件。接口可以上传文件。
1.在app.js入口文件要先: (1)npm install multer 安装multer模块(2)引入multer模块
(3)使用路由中间件 (4)定义上传的文件存放路径 (5)允许所有上传
(6)指定静态资源路径
2、上传用的路由中间件,里面写了接口
文件上传接口的全部代码:
const express = require('express') //1.引入express
const router = express.Router() //2.引入路由
const fs = require('fs')
const { db, genid } = require('../db/DbUtils') //引入雪花id和数据库
router.post('/rich_upload', async (req, res) => {
if (!req.files) {
//判断如果文件为空
res.send({
errno: 1, // 只要不等于 0 就行
message: '失败信息',
})
return //文件不存在就直接返回
}
let files = req.files //前端发送的请求文件
let ret_files = []
for (let i of files) {
// files.originalname文件原始的名字,字符串名.substring(从第几位开始提取)
// lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,
// 等于0的时候,获取的整个文件名的全部,因为就是从0开始提取就是提取全部,()里面写从第几位开始提取
let file_ext = i.originalname.substring(i.originalname.lastIndexOf('.') + 1)
let file_name = genid.NextId() + '.' + file_ext // 随机文件名字
// 修改名字 fs.renameSync( oldPath, newPath ),修改文件名字加移动文件
fs.renameSync(
process.cwd() + '/public/upload/temp/' + i.filename,
process.cwd() + '/public/upload/' + file_name // process.cwd()返回运行当前脚本的工作目录的路径
)
ret_files.push('/upload ' + file_name)
}
res.send({
errno: 0, // 注意:值是数字,不能是字符串
data: {
' url': ret_files[0], // 图片 src ,必须
},
})
})
module.exports = router //3.导出路由
3.app.js文件,引入这个路由中间件才可以调用接口。
app.use('/upload', require('./routers/UploadRouter'))
//app.use(定义的接口名字,require(中间件文件路径))
二、博客分类的增删查改,接口。也是路由中间件的形式写的。
路由中间件 编写流程: