(八)nodejs Express框架

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('服务器启动');
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值