express处理路由与session以及session和redis的连接

                                      express处理路由与session以及session和redis的连接

express处理路由

   在express中封装好了去处理路由的方式,其方式不像之前那样需要自己去处理req.body以及req.querystring的内容。在这里只需要去分别调用处理其的封装好的方法即可。另外一点就是导入路由的方法,在app.js文件中处理的就是总的路由,在routes中处理的为各个分路由。那么接下来就用实际例子说明。

  首先在routes中创建两个文件将其分别命名为user.js与blog.js,然后在其内部做子路由的处理,然后再在app.js中去
引用这个自定义的路由,然后使用app.use(path,自定义路由名)即可完成
再blog.js中处理list中的数据代码如下:
var express = require('express');
var router = express.Router();

/* GET list page. */
router.get('/list', function(req, res, next) {
  res.json({
      error: 0,
      data: [1,2,3]
  })
});

module.exports = router;
同理在user.js中文件的处理代码如下:
var express = require('express');
var router = express.Router();

/* post user login  page. */
router.post('/login', function(req, res, next) {
    // 可以通过req.body获取到username password
    const { username,password } = req.body;
  res.json({
    error: 0,
    data: {
        username,
        password
    }
  })
});

module.exports = router;
对于此login页面的代码部分可以很清楚的认识到,username  password 都是通过req.body获取。在这里需要注意的
是如果我们返回的是json数据,则在app.js中的处理代码为:app.use(express.json());
 如果不是,则处理部分的代码为:app.use(express.urlencoded({ extended: false }));

在之前没用任何的框架处理路由的方式当中,在数据处理这块处理的只是json格式的数据,而其他的数据格式并没有做任何的处理,在express中就封装了如何去处理其他数据格式的数据。在上面的代码中并没有完成最后的工作。还需要将导出的路由在app.js文件中做一个处理,首先通过require()引入,然后使用app.use('',引入的文件)第一个参数传入对应的根目录,第二个参数为引用的文件。到此为止就在express中跑通了整个的路由,所有路由的处理方式都是如上过程所述。具体按照自己的实际情况来实现。

express处理session 

首先来回顾session的作用,用于保存前台放在后台的一些信息。在req.session中主要保存的是登录信息,所以在这里涉及到对于登录校验,对于登录校验同样采用的还是中间件的方式来处理。在express中不需要我们手动去写处理session的函数,这个地方只需要去引用express中的express-session这个插件即可。然后只需要配置好参数即可。该配置文件是放在app.js当中,配置的代码如下:

 首先引入这个插件 const session = require('express-session')
//deal session
app.use(session({
  secret: '#hhjdA165_', // 传入的密匙
  cookie: {
    // path: '/',      //默认参数
    // httpOnly: true, //默认参数
    maxAge: 24 * 60 * 60 * 1000    //用maxAge直接写入最大储存时间
  },
  store: sessionStore
}))

与加密密码一样,session中的内容如果传入到前端我们可以将其加密,这样保证了数据的安全性,因此,在session中
传入的参数,第一个为secret: 'content',content中的内容为密匙  第二个参数是cookie,里面用于存放cookie中的数据
第三个参数为储存的位置,这里储存的位置将之与redis连接起来,将session的数据放入redis中有以下的好处:1.高效 2.共享数据。

session与redis连接

在上面的session配置文件中,有关store属性该属性的作用就是用来将session的数据放在redis当中储存。sessionStrore是使用redis去创建一个客户端,然后将其导出,这里还需要用到一个插件connet-redis用于express与redis做连接这样就可以将session与redis连接起来存放数据具体的代码如下:

// 导入的connet-redis是函数,将session放入即可
const RedisStore = require('connect-redis')(session);
然后将导出来的redis中的数据放在里面即可:

//export redis  setting connect width server
const redisClient = require('./db/redis');
const sessionStore = new RedisStore({
  client: redisClient
})
然后就将这个sessionStore放入store中就可以完成整个连接过程。在这里所引用的./db/redis是在之前部分中所说过的对于redis内存数据库的封装。具体请参照https://blog.csdn.net/care_yourself/article/details/101147344,唯一的不同点在与这个文件中做了一个服务器的配置处理

 

处理了线上与线下环境当中所用的服务器的处理,最后将导出的内容引入到redis的引用处,将里面的端口号和ip地址更改为REDIS_CONF.port与REDIS_CONF.host即可。

猜你喜欢

转载自blog.csdn.net/care_yourself/article/details/101366491