Express、路由、中间件和cookie与session

express

介绍

其实就是一个node环境中一种web框架,可以使用express实现一个完整的项目(可以实现前后端分离或者不分离)

官网:https://www.expressjs.com.cn/

基本使用

1、创建项目的目录

在这里插入图片描述

2、安装express

npm install express --save

3、创建项目的入口文件

// 载入框架模块
const express = require('express')
// 创建服务
const app = express()
// 设置路由
app.get('/',(request,response)=>{
    // request与response 是express在node中内置的http模块的基础上进行封装的对象。所以request与response 可以使用到内置的一些方法以及express额外提供的方法
    response.send({id:1})
})
// 启动服务
app.listen(8080,err=>err && console.log('端口号被占用'))

参数获取

get参数

app.get('/users', (request, response) => {
    let data = [{
            id: 1,
            nickname: '西瓜妹妹'
        },
        {
            id: 2,
            nickname: '熊文凯'
        }
    ]
    // express 将get请求的所有参数信息全部放到了request对象下的query属性中并且还是对象格式
    console.log(request.query)
    let responseData = data.filter(item => item.id == request.query.id )
    response.send(responseData)
})

post参数

在这里插入图片描述

静态资源托管

在这里插入图片描述

路由

路由的基本使用

1、语法

app.请求方法的同名方法(地址匹配,执行函数)
请求方法的同名方法 表示http协议中请求方式 可以使用get、post、put、delete、all(不限制请求方式)
地址匹配:需要写一个字符串 针对请求的地址进行匹配 千万别丢了/
执行函数:表示请求到达后的处理方式

2、基本使用

app.all('/cart',(request,response)=>{
    response.send('cart')
})
// 限制只能get方式
app.get('/goods',(request,response)=>{
    response.send('ok')
})

app.post('/login',(request,response)=>{
    console.log(request.body)
    response.send('ok')
})

路由模块化

基本模块化

如果将所有的路由信息全部设置到index.js中会导致整个项目的代码全部写到了一个文件中。所以需要实现将路由

抽离出入口文件

1、抽离路由

在这里插入图片描述

2、导入路由

在这里插入图片描述

按照功能模块拆分

1、按照模块划分商品模块

在这里插入图片描述

2、按照模块划分用户

在这里插入图片描述

3、路由的路口文件载入

在这里插入图片描述

路由自动载入

在这里插入图片描述

中间件

中间件介绍

中间件就是请求被接受到请求处理过程中先做某一些操作。中间件的本质就是一个函数。

例如需要实现接口 验证用户必须登录,如果每次都在接口的逻辑层处理登录问题会导致代码量变大

中间件分类

1、内置中间件

2、自定义中间件

3、第三方中间件

内置中间件

内置中间件就是在express的源码中已经实现了的功能,可以直接使用,例如前面使用接受post参数。可以通过

app.use使用到处理JSON与表单格式的数据自动转换为对象。自动在请求对象下增加了body属性

自定义中间件

自定义中间件使用

//1.导入模块
const express = require('express');
//2.创建服务器
let app = express();

// 自定义中间件
let checkUserLogin = (request,response,next)=>{
    // 使用get携带参数表示是否已经登录
    if(request.query.username == 'admin'){
        // 在中间中修改对象 使用该中间件的都可以正常获取对象下的属性
        request.loginUser = 'admin'
        // 表示继续向下执行
        next()
    }else{
        response.send('没登录先去登录')
    }
}
// 模拟用户的登录操作
app.get('/login',(request, response) => {
    // 重定向到指定的地址
    response.redirect('/?username=admin')
})

app.get('/', checkUserLogin ,(request, response) => {
    console.log(request.loginUser)
    response.send('ok');
})
//3.开启服务器
app.listen(3000, () => {
    console.log('success');
});

全局错误中间件

1、设置模块处理状态码与提示信息的对应

在这里插入图片描述

2、设置错误中间件

在这里插入图片描述

3、抛出错误

在这里插入图片描述

第三方跨域中间件

1、下载

npm install cors

2、使用中间件

在这里插入图片描述

cookie与session

cookie

1、流程

在这里插入图片描述

2、安装cookie中间

npm install cookie-parser express

3、使用cookie

//1.导入模块
const express = require('express');
const cookieParser = require('cookie-parser')
//2.创建服务器
let app = express();

// 使用cookie中间件
app.use(cookieParser())
app.use(express.static('public'))

app.get('/',(request,response)=>{
    console.log(request.cookies)
    response.send('ok')
})

app.post('/login',(request,response)=>{
    // 验证信息
    // 设置cookie
    response.cookie('user','admin')
    // response.redirect('/')
    response.send('登录成功')
})
//3.开启服务器
app.listen(3000, () => {
    console.log('success');
});

session

cookie采用的是本地客户端存储的方式记录用户信息。所以安全系数相对低,所以就可以使用session解决,session是将信息保存到服务端

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Web开发中,可以使用cookiesession存储用户id,具体方法如下: 1. 使用cookie 在前端中,可以使用JavaScript中的document.cookie来设置和读取cookie。例如,可以使用以下代码设置一个名为"id",值为"123",过期时间为一天的cookie: ```javascript document.cookie = "id=123;expires=" + new Date(new Date().getTime() + 86400000).toGMTString(); ``` 在后端中,可以使用HTTP响应头中的Set-Cookie字段来设置cookie。例如,在Node.js中,可以使用以下代码将cookie设置为响应头中: ```javascript res.setHeader('Set-Cookie', 'id=123;expires=' + new Date(new Date().getTime() + 86400000).toGMTString()); ``` 在后续的请求中,可以使用document.cookie来读取cookie的值。 2. 使用session 在前端中,可以使用浏览器提供的sessionStorage或localStorage来存储数据。sessionStorage存储的数据仅在当前会话期间有效,而localStorage存储的数据在浏览器关闭后依然有效。例如,可以使用以下代码将id存储到sessionStorage中: ```javascript sessionStorage.setItem('id', '123'); ``` 在后端中,可以使用服务器框架提供的session中间件来实现session功能。例如,在Express框架中,可以使用以下代码启用session中间件: ```javascript const session = require('express-session'); app.use(session({ secret: 'my-secret-key', resave: false, saveUninitialized: false, cookie: { secure: false, maxAge: 86400000 } })); ``` 在路由处理函数中,可以使用req.session来访问session对象,并将id存储到session对象中: ```javascript router.get('/', (req, res) => { req.session.id = '123'; res.send('Hello World!'); }); ``` 在后续的请求中,可以使用req.session.id来获取存储在session中的id值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

goto_w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值