nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)

nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第1张图片
安装ejs express
新建app.js
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第2张图片
新建index.ejs
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第3张图片
渲染
在这里插入图片描述
传递数据
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第4张图片
配置中间件
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第5张图片
配置login界面 login.ejs
在这里插入图片描述
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第6张图片
路由级中间件
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第7张图片
应用级中间件 路由级中间件 写在路由之前
错误级中间件
新建error.ejs
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第8张图片
regist不存在
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第9张图片
写错误日志
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第10张图片

在这里插入图片描述
get路由传值
在这里插入图片描述
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第11张图片
post路由传值
在index.ejs写一个表单
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第12张图片
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第13张图片
获取post提交的值 在success.ejs上绑定name
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第14张图片
在express框架中使用第三方中间件获取post提交的值
安装 body-parser
引入body-parser配置
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第15张图片
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第16张图片
写入缓存的中间件 cookie-parser
安装 cookie-parser
cnpm install cookie-parser --save
引入 配置 cookie-parser
"abcdef…"为加密
在这里插入图片描述
get cookie 加s
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第17张图片
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第18张图片
在有效期之内读取cookie 可以读到 超时就没有了 时间限制maxage
未签名的获取方式与签名的获取方式(签名=加密)
nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)_第19张图片
app.js

/* 
express
*/
var express = require("express")
var ejs = require("ejs")
var fs = require("fs");
var url=require("url")
var app = new express();


var bodyParser=require("body-parser")
//配置express  框架使用body-parser
//解析application / x-www-form-urlencoded  当前的编码格式
app.use(bodyParser.urlencoded({ extended: false }))
//解析为json
app.use(bodyParser.json())

var cookie=require("cookie-parser");
//配置给express框架
app.use(cookie("abcdefg"));



//设置express  使用ejs模板引擎
app.set("view engine", "ejs"); //--可以修改文件后缀
//配置当前框架的静态资源文件
//use  为express 框架的中间件
app.use(express.static("static"));
//app.use("public",express.static("static"));
//配置应用级中间件
app.use(function (err, req, res, next) {
    if (err) {
        next(err);
    }
    else {
        console.log("我是应用级中间件");
        next();
    }
});

//路由级中间件  在执行当前路由之前做相关处理


app.use("/", function (req, res, next) {
    console.log("我是首页中间件");
    next();
});
app.get("/", function (req, res) {
    res.render("index", {
        list: "首页"
    }, function (err, str) {
        res.send(str);
    });
});
app.use("/login", function (req, res, next) {
    console.log("我是login中间件");
    next();
});
app.get("/login/:id", function (req, res) {
    //接收路由动态传值
    console.log(req.params);
    res.render("login", function (err, str) {
        res.send(str);
    });
});

app.get("/regest", function (req, res, next) {
    //接收路由get传值
    console.log(req.query);
    res.send("regest");
    /* fs.readFile("./data.txt",function (err,data){
        if(err)
        {
            next(err);
        }
        res.send(data);
    }); */
});

/* 
post路由接收传值


在express框架中使用第三方中间件去获取post 提交的值
body-parser  

cnpm install body-parser --save

使用body-parser   var bodyParser = require('body-parser')
*/
app.post("/userlogin", function (req, res, next) {
    //之前写法监听
    /* var result = "?";
    req.on("data", function (s) {
        result += s;
    });
    req.on("end", function () {
        console.log(url.parse(result,true).query.username);
        var name=url.parse(result,true).query.username;
        res.render("success",{
            name:name
        });
    }); */
    // 在使用第三方中间件body-parser  获取post提交数据 直接使用req.body  就可以获取到json数据
    console.log(req.body);
    res.render("success");
});

//第三方中间件  cookie-parser
//1. 安装cookie-parser    cnpm install cookie-parser --save

app.get("/setcookie",function (req,res){
    //设置cookie  以及有效期  maxAge:事件   signed:true  设置签名
    res.cookie("user","maodou",{maxAge:10000,signed:true});
    res.send("设置cookie成功!");
});
app.get("/getcookie",function (req,res){
    //获取cookie
    //未加密的获取方式
    //var user=req.cookies.user;
    //加密的获取方式
    var user=req.signedCookies.user;
    console.log(user);
    res.send("读取cookie成功!");
})

//MD5  单向加密     js-base64  可以加密可以解密
/* 
Base64.encode('小飼弾');    // 5bCP6aO85by+
 
Base64.decode('ZGFua29nYWk='); 
*/
//当前路由不存在渲染404页面出去
app.use(function (req, res, next) {
    res.status(404).render("error");
});

//错误级中间件   是在项目里面出现错误的时候执行中间件
app.use(function (err, req, res, next) {
    console.log(err.stack);//报错错误的状态码  以及错误
    fs.appendFile("./error/error.txt", err.stack + "\n", function (error) {
        if (err) {
            next(error);
            return;
        }
        console.log("追加成功!");

    })
    console.log("我是错误中间件");
    res.status(404).render("error");
});
app.listen(8100);

index.ejs

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div>
        我是<%=list%>
    </div>
    <form method="post" action="/userlogin">
        <ul>
            <li>姓名:<input type="text" name="username"></li>
            <li><input type="submit"></li>
        </ul>
    </form>
</body>
</html>

你可能感兴趣的:(nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件))