安装
1、body-parser -node.js中间件,用于处理JSON,Raw,Text和URL编码的数据
2、cookie-parser -解析Cookie的工具,通过req.cookies可以取到传过来的cookie,并把它们转换成对象
3、multer -node.js中间件,用于处理enctype=’multipart/form-data’的表单数据
路由请求
- req,res
app.get('/get',(req,res) => {console.log(req.url);console.log(req.method);console.log(req.headers);res.send(req.headers)})
获取任务队列
参考课程:https://www.bilibili.com/video/BV1mQ4y1C7Cn?p=7&spm_id_from=pageDriver ```javascript const express = require(‘express’)
const fs = require(‘fs’)
const app = express()
app.get(‘/todos’,(req,res) => { fs.readFile(‘./file/db.json’,’utf-8’,(error,data) => { if(error){ return res.status(500).json({ error: error.message }) } const db = JSON.parse(data) // http中一起请求只能对应一个响应 res.status(200).json(db.todos) }) })
// :id类似正则匹配
app.get(‘/todos/:id’,(req,res) => {
// 下面获取id参数的方法值得注意
//res.send(get/todos/${req.params.id})
fs.readFile(‘./file/db.json’,’utf-8’,(error,data)=>{
if(error){
return res.status(500).json({
error:error.message
})
}
const db = JSON.parse(data)
db.todos.find(todo => todo.id === Number.parseInt(req.params.id))
if(!todo){
return res.status(404).end()
}
/*
* 或者通过下面封装后的方式方式try{const db =await getDb()const todo = db.todos.find(todo => todo.id === Number.parseInt(req.params.id))if(!todo){return res.status(404).end()}res.status(200).json(todo)}catch(err){res.status(404).json({error:err.message})}*/
})
app.post(‘/todos’,(req,res) => { res.send(‘post/todos’) })
app.patch(‘/todos’,(req,res) => { res.send(‘patch/todos’) })
app.listen(3000,() => {
console.log(服务已经启动,http://localhost:3000);
})
**功能封装**<br />上面的代码中存在重复现象,这时我们可以将同样的功能的模块进行封装<br />创建一个db.js封装重复代码```javascriptconst fs = require('fs')const { promisify } = require('util')const path = require('path')const readFile = promisify(fs.readFile)const writeFile = promisify(fs.writeFile)// 获取dbPath的绝对路径const dbPath = path.join(__dirname,'../file/db.json')exports.getDb = async () => {const data = await readFile(dbPath,'utf8')return JSON.parse(data)}-exports.saveDb = async db => {const data = JSON.stringify(db,null,' ')await writeFile(dbPath,data)}
中间件
1、先看封装
const express = require('express')const app = express()const myLogger = (req) =>{console.log(req.method,req.url,Date.now());}app.get('/', (req,res) => {myLogger(req)res.send('get/')})app.get('/about', (req,res) => {myLogger(req)res.send('get/about')})app.post('/login', (req,res) => {myLogger(req)res.send('post/login')})app.patch('/patch', (req,res) => {myLogger(req)res.send('get/patch')})app.listen(3000,() => {console.log(`服务已经启动 http://localhost:3000`);})
2、中间件
