安装express、登录接口

2019年9月8日09:08:39 发表评论 暂未收录

安装(使用脚手架 express)

// npm 全局安装 express-generator
npm install express-generator -g
// 用 express 命令生成一个项目
express express-test
// 最后
npm install & npm start

介绍 express 入口代码

  • morgan 日志插件
  • cookie-parser cookie插件
const cookieParser = require('cookie-parser')
app.use(cookieParser)
// 在这之后就可以通过
req.cookie // 获取 cookie 的值

演示express如何处理路由

  • app.js
const blogRouter = require('./routes/blog');
app.use('/users', usersRouter);
  • ./routes/blog
const express = require('express');
const router = express.Router();
router.get('/list', (req, res, next) => {
    const { username, password } = req.body
    res.json({
        errno: 0,
        data: [1,2,3]
    })
})
  • ./routes/user
const express = require('express');
const router = express.Router();
router.post('/login', (req, res, next) => {
    const { username, password } = req.body
    res.json({
        errno: 0,
        data: {
            username,
            password
        }
    })
})

express中间件

const express = require('express');
const app = express();
app.use((req, res, next) => {
    console.log('请求开始')
    next();
})
// 假设处理 cookie
app.use((req, res, next) => {
    req.cookie = {
        userId: 123
    }
    next()
})

// 假设处理 postData
app.use((req, res, next) => {
    setTimeout(()=> {
        req.body = {
            a: 100,
            b: 200
        }
        next()
    })
})

app.use('/api', (req, res, next) => {
    console.log('处理 api 路由')
    next()
})

app.get('/api', (req, res, next) => {
    console.log('get /api 路由')
    next()
})

app.post('/api', (req, res, next) => {
    console.log('post /api 路由')
    next()
})

app.get('/api/get-cookie', (req, res, next) => {
    console.log('get /api/get-cookie')
    res.json({
        errno: 0,
        data: req.cookie
    })
})

app.post('/api/post-data', (req, res, next) => {
    console.log('post /api/post-data');
    res.json({
        errno: 0,
        data: req.body
    })
})

app.use((req, res, next) => {
    console.log('处理404')
    res.json({
        errno: -1,
        msg: '404 not fount'
    })
})

app.listen(3000, () => {
    console.log('sever is running on port 3000')
})

登录

  • 使用 express-session 和 connect-redis 简单方便
  • res.session 保存登录信息,登录校验做成 express 中间件
// 安装 express-session
npm install express-session --save
// 导入
const session = require('express-session');
app.use(session({
    // secret [秘密的、机密的] 这里做秘钥的用途
    secret: 'ixxapp_2019',
    cookie: {
        path: '/', // 默认配置 可不写
        httpOnly: true, // 确保前端不能访问cookie 默认配置 可不写
        maxAge: 24 * 60 * 60 * 1000 // 失效时间
    }
}))
// 安装 redis
npm install redis connect-redis --save
  • 利用 redis 存储
const session = require('express-session')
const RedisStore = require('connect-redis')(session)

// 引用 redisClient
const redisClient = require('./db/reids')
const sessionStore = new RedisStor({
    client: redisClient
})
app.use(session({
    secret: 'ixxapp_2019',
    cookie: {
        maxAge: 24 * 60 * 60 * 1000
    },
    store: sessionStore
}))
weinxin
我的微信
爱生活、爱学习的小伙伴可以通过扫一扫二维码添加我的个人微信一起交流!
青青子衿

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: