1.express的安装和基本使用
安装:npm install -g express-generator
初始化:
express express-demo
cd express-demo
npm install
node bin/www
2.express初体验
const express = require('express');
const app = express();
app.listen(8000,()=>{
console.log('服务器启动');
})
监听get和post请求
3.中间件
(1)普通中间件
(2)路径中间件
(3)路径和方法中间件
(4)连续注册中间件
(5)中间件的应用一 :数据解析
自己编写的json数据解析
const express = require('express');
const app = express();
app.use((req,res,next)=>{
if(req.headers['content-type']==='application/json'){
req.on('data',(data)=>{
req.body = JSON.parse(data.toString());
})
req.on('end',()=>{
next();
})
}else{
next();
}
})
app.post('/login',(req,res,next)=>{
console.log(req.body);
res.end('login拿到啦');
})
app.post('/users',(req,res,next)=>{
console.log(req.body);
res.end('users拿到啦');
})
app.listen(3000,()=>{
console.log('服务器启动');
})
使用express提供的数据解析方法:
json格式简写: app.use(express.json()):
x-www-form-urlencoded格式简写:app.use(express.urlencoded({extended:true})) //extended决定是使用node的内置库还是以来的qs库进行解析
c
const multer = require(‘multer’);
cosnt upload = multer();
app.post(""/login,upload.any(),(req,res,next)=>{
res.end(“success”)});
使用multer库提供form-data文件数据解析方法:
const express = require('express');
const multer = require('multer');
const app = express();
const upload = multer({
dest:'./uploads/'
})
app.post('/upload',upload.single('wzw'),(req,res,next)=>{
res.end("success");
})
app.listen(3000,()=>{
console.log('服务器启动');
})
对存储文件名有要求:
回调函数req.files中存储的是文件信息
(6)中间件的应用二:打印日志
const express = require('express');
const morgan = require('morgan');
const fs = require('fs');
const app = express();
const writeStream = fs.createWriteStream('./logs/access.log',{
flags:"a+"
})
app.use(morgan("combined",{stream:writeStream}));
app.get('/login',(req,res,next)=>{
res.end("success");
})
app.listen(3000,()=>{
console.log('服务器启动');
})
4.常见的参数传递
方式一:
方式二:
5.response的响应
(1)给客户端返回数据
方式一:
res.type(‘application/json’);
res.end(JSON.stringify({name:“why”,age:“18”}))
方式二:
res.json({name:“why”,age:“18”})
(2)设置相应码
res.status(204);
6.express路由的使用
//users.js
const express = require('express');
const router = express.Router();
router.get('/',(req,res,next)=>{
res.json([{name:"wzw",age:21},{name:'w',age:12}]);
})
router.get('/:id',(req,res,next)=>{
res.json(`${req.params.id}的个人信息`);
})
router.post('/',(req,res,next)=>{
res.json('success');
})
module.exports = router;
//expresstest.js
const express = require('express');
const userRouter = require('./routers/users');
const multer = require('multer');
const app = express();
app.use("/users",userRouter);
app.listen(3000,()=>{
console.log('服务器启动');
})
7.静态资源服务器
app.use(express.static('./build');
8.express的错误处理
const express = require('express');
const userRouter = require('./routers/users');
const multer = require('multer');
const Error_Not_Found = 'error does not found';
const Error_Number_is_wrong = "number is wrong";
const app = express();
app.get("/login",(req,res,next)=>{
let exist = false;
if(exist){
next(new Error(Error_Not_Found));
}else{
next(new Error(Error_Number_is_wrong));
}
})
app.use((err ,req,res,next)=>{
switch(err.message){
case Error_Not_Found:
res.end(Error_Not_Found);
break;
case Error_Number_is_wrong:
res.end(Error_Number_is_wrong);
break;
}
})
app.listen(3000,()=>{
console.log('服务器启动');
})