首页
关于我的
文章归档
友情链接
更多
随机进入
Search
1
解决包下载慢的问题
1,174 阅读
2
PHP简易本地授权实现
219 阅读
3
RSA生成密钥和公钥
69 阅读
4
mysql分批插入数据
65 阅读
5
常用sql语句
63 阅读
默认分类
前端技术
登录
Search
标签搜索
node.js
express
mysql
PHP
FileSystem
path
npm
jsonwebtoken
session
中间件
axios
RSA
FengXin
累计撰写
14
篇文章
累计收到
0
条评论
首页
栏目
默认分类
前端技术
页面
关于我的
文章归档
友情链接
随机进入
搜索到
5
篇与
的结果
2023-07-24
node中间件的使用
定义一个中间件// 导入 express 模块 const express = require('express') // 创建 web 服务器 const app = express() // 定义中间件 const mv = function(req, res, next) { console.log('触发了中间件!') next() } // 全局注册中间件 app.use(mv) // 启动 web 服务器 app.listen(80, () => { console.log('express server running at http://127.0.0.1') })简化形式// 导入 express 模块 const express = require('express') // 创建 web 服务器 const app = express() // 定义一个全局中间件简化形式 app.use((req, res, next) => { console.log('这是最简单的中间件函数') next() }) // 启动 web 服务器 app.listen(80, () => { console.log('express server running at http://127.0.0.1') })中间件的作用多个中间件之间,共享同一份 req 和 res。基于这样的特性,我们可以在上游的中间件中,统一为 req 或 res 对象添加自定义的属性或方法,供下游的中间件或路由进行使用// 导入 express 模块 const express = require('express') // 创建 web 服务器 const app = express() // 定义一个全局中间件简化形式 app.use((req, res, next) => { // 获取请求到达服务器的时间 const time = Date.now() // 为 req 对象,挂载自定义属性,从而把时间共享给后面的所有路由 req.startTime = time next() }) app.get('/', (req, res) => { res.send('这是首页' + req.startTime) }) // 启动 web 服务器 app.listen(80, () => { console.log('express server running at http://127.0.0.1') })定义多个中间价可以使用 app.use() 连续定义多个全局中间件。客户端请求到达服务器之后,会按照中间件定义的先后顺序依次进行调用// 导入 express 模块 const express = require('express') // 创建 web 服务器 const app = express() // 定义一个全局中间件简化形式 app.use((req, res, next) => { console.log('第一个中间件') next() }) app.use((req, res, next) => { console.log('第二个中间件') next() }) app.get('/', (req, res) => { res.send('这是首页') }) // 启动 web 服务器 app.listen(80, () => { console.log('express server running at http://127.0.0.1') })局部生效中间件不使用 app.use() 定义的中间件,叫做局部生效的中间件// 导入 express 模块 const express = require('express') // 创建 web 服务器 const app = express() // 定义一个中间件 const mw1 = (req, res, next) => { console.log('调用了局部中间件') next() } // mw1 中间件只在当前路由中生效 app.get('/', mw1, (req, res) => { res.send('这是首页') }) app.get('/user', (req, res) => { res.send('这是用户界面') }) // 启动 web 服务器 app.listen(80, () => { console.log('express server running at http://127.0.0.1') })调用多个局部中间件// 导入 express 模块 const express = require('express') // 创建 web 服务器 const app = express() // 定义一个中间件 const mw1 = (req, res, next) => { console.log('调用了第一个局部中间件') next() } const mw2 = (req, res, next) => { console.log('调用了第二个局部中间件') next() } // mw1, mw2 中间件只在当前路由中生效 // app.get('/', mw1, mw2, (req, res) => { // res.send('这是首页') // }) // 当调用多个中间件时,可以将他们写成一个数组的形式 app.get('/', [mw1, mw2], (req, res) => { res.send('这是首页') }) app.get('/user', (req, res) => { res.send('这是用户界面') }) // 启动 web 服务器 app.listen(80, () => { console.log('express server running at http://127.0.0.1') })
2023年07月24日
26 阅读
0 评论
0 点赞
2023-07-24
在express中使用session认证
安装 express-sessionnpm i express-session创建 web 服务器// 导入 express 模块 const express = require('express') // 创建 web 服务器 const app = express() // 启动服务器 app.listen(80, () => { console.log('http://127.0.0.7') })配置并注册 session 中间件// 配置 session 中间件 const session = require('express-session') // 注册 session 中间件 app.use(session({ secret: 'itheima', resave: false, saveUninitialized: true }))向 session 中存数据// 登录的 API 接口 app.post('/api/login', (req, res) => { // 判断登录信息是否正确 if (req.body.username != 'admin' || req.body.password != '000000') { return res.send({ status: 1, msg: '登陆失败!' }) } // 登录成功,将用户信息保存到 session req.session.user = req.body // 用户的信息 req.session.islogin = true // 用户的登录状态 res.send({ status: 0, msg: '登录成功!' }) })从 session 中取数据// 获取用户名称的接口 app.get('/api/username', (req, res) => { // 从 session 中获取用户的名称,响应给客户端 // 判断用户是否已登录 if (!req.session.islogin) { return res.send({ status: 1, msg: '请先登录!' }) } res.send({ status: 0, msg: '您已登录!', username: req.session.user.username }) })清空 session// 退出登录的接口 app.post('/api/logout', (req, res) => { // 清空 session 信息 req.session.destroy() res.send({ status: 0, msg: '退出登录成功!' }) })
2023年07月24日
30 阅读
0 评论
0 点赞
2023-07-24
在express中使用JWT
安装 JWT 和 jsonwebtokennpm i express-jwt jsonwebtoken导入两个相关包// TODO_01:安装并导入 JWT 相关的两个包,分别是 jsonwebtoken 和 express-jwt const jwt = require('jsonwebtoken') const expressJWT = require('express-jwt')定义 secret 密钥// TODO_02:定义 secret 密钥,建议将密钥命名为 secretKey const secretKey = 'itheima No1 ^_^'生成 JWT 字符串// 登录接口 app.post('/api/login', function (req, res) { // 将 req.body 请求体中的数据,转存为 userinfo 常量 const userinfo = req.body // 登录失败 if (userinfo.username !== 'admin' || userinfo.password !== '000000') { return res.send({ status: 400, message: '登录失败!', }) } // 登录成功 // TODO_03:在登录成功之后,调用 jwt.sign() 方法生成 JWT 字符串。并通过 token 属性发送给客户端 // 参数1:用户的信息对象 // 参数2:加密的秘钥 // 参数3:配置对象,可以配置当前 token 的有效期,s:秒,h:小时 // 记住:千万不要把密码加密到 token 字符中 const tokenStr = jwt.sign({ username: userinfo.username }, secretKey, { expiresIn: '30s' }) res.send({ status: 200, message: '登录成功!', token: tokenStr, // 要发送给客户端的 token 字符串 }) })将 JWT 字符串还原为 JSON 对象// TODO_04:注册将 JWT 字符串解析还原成 JSON 对象的中间件 // 注意:只要配置成功了 express-jwt 这个中间件,就可以把解析出来的用户信息,挂载到 req.user 属性上,‘/api’ 开头的接口不需要权限 app.use(expressJWT({ secret: secretKey }).unless({ path: [/^\/api\//] }))在有权限的接口中调用 req.user 对象// 这是一个有权限的 API 接口 app.get('/admin/getinfo', function (req, res) { // TODO_05:使用 req.user 获取用户信息,并使用 data 属性将用户信息发送给客户端 console.log(req.user) res.send({ status: 200, message: '获取用户信息成功!', data: req.user, // 要发送给客户端的用户信息 }) })捕获解析 JWT 失败后产生的错误// TODO_06:使用全局错误处理中间件,捕获解析 JWT 失败后产生的错误 app.use((err, req, res, next) => { // 这次错误是由 token 解析失败导致的 if (err.name === 'UnauthorizedError') { return res.send({ status: 401, message: '无效的token', }) } res.send({ status: 500, message: '未知的错误', }) })
2023年07月24日
61 阅读
0 评论
0 点赞
2023-07-24
使用express写接口
1.创建服务器// 导入 express 模块 const express = require('express') // 创建服务器实例 const app = express() // 启动服务器 app.listen(80, () => { console.log('server running at http://127.0.0.1') })2.创建并暴露路由模块const express = require('express') const router = express.Router() // 在这里挂载对应的路由 router.get('/get', (req, res) => { const query = req.query res.send({ status: 0, msg: 'GET 请求成功!', data: query }) }) router.post('/post', (req, res) => { const body = req.body res.send({ status: 0, msg: 'POST 请求成功!', data: body }) }) module.exports = router3.导入并注册路由模块// 导入 express 模块 const express = require('express') // 创建服务器实例 const app = express() // 导入路由模块 const router = require('./apiRouter') // 把路由模块注册到 app 上 app.use('/api', router) // 启动服务器 app.listen(80, () => { console.log('server running at http://127.0.0.1') })4.在路由前配置解析表单数据的中间件// 导入 express 模块 const express = require('express') // 创建服务器实例 const app = express() // 通过 express.json() 这个中间件来解析 JSON 格式的数据 app.use(express.json()) // 配置解析表单数据的中间件 app.use(express.urlencoded({ extended: false })) // 导入路由模块 const router = require('./apiRouter') // 把路由模块注册到 app 上 app.use('/api', router) // 启动服务器 app.listen(80, () => { console.log('server running at http://127.0.0.1') })5.解决跨域问题5.1安装 cors 中间件模块npm i cors5.2在路由之前导入并注册 cors 中间件// 导入 express 模块 const express = require('express') // 创建服务器实例 const app = express() // 通过 express.json() 这个中间件来解析 JSON 格式的数据 app.use(express.json()) // 配置解析表单数据的中间件 app.use(express.urlencoded({ extended: false })) // 在路由之前配置 cors 中间件,从而解决跨域问题 const cors = require('cors') // 全局注册 cors 中间件 app.use(cors()) // 导入路由模块 const router = require('./apiRouter') // 把路由模块注册到 app 上 app.use('/api', router) // 启动服务器 app.listen(80, () => { console.log('server running at http://127.0.0.1') })
2023年07月24日
39 阅读
0 评论
0 点赞
2023-07-24
express路由
路由的简单用法// 导入 express 模块 const express = require('express') // 创建 web 服务器 const app = express() // 挂载路由 app.get('/', (req, res) => { res.send('Hello World') }) app.post('/', (req, res) => { res.send('请求成功!') }) // 启动 web 服务器 app.listen(80, () => { console.log('express server running at http://127.0.0.1') })模块化路由1.创建一个 web 服务器(命名index.js)// 1.导入 express 模块 const express = require('express') // 2.创建 web 服务器 const app = express() // 3.启动 web 服务器 app.listen(80, () => { console.log('server running at http://127.0.0.1') })2.再创建一个路由模块(命名router.js)// 这是一个路由模块 // 1.导入 express 模块 const express = require('express') // 2.创建路由对象 const router = express.Router() // 3.挂载具体的路由 router.get('/user/list', (req, res) => { res.send('用户列表数据') }) router.post('/user/add', (req, res) => { res.send('添加成功!') }) // 4.导出路由对象 module.exports = router3.导入并注册路由模块// 1.导入 express 模块 const express = require('express') // 2.创建 web 服务器 const app = express() // 4.导入路由模块 const router = require('./router') // 5.注册路由模块 app.use(router) // 3.启动 web 服务器 app.listen(80, () => { console.log('server running at http://127.0.0.1') })为路由模块添加前缀// 与托管静态资源时相同,在注册路由模块时为其添加 app.use('/api', router)
2023年07月24日
44 阅读
0 评论
0 点赞