为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第6天 Node.js工程师学习笔记

课程章节: Node框架实战篇 - Express 中间件与RESTful API 接口规范 (1)

课程讲师: 北瑶

课程内容:

Express中间件的概念与基本应用

在 NodeJS 中, 中间件主要是指封装所有 Http 请求细节处理的方法. 一次 Http 请求通常包含很多工作, 如记录日志, ip 过滤, 查询字符串, 请求头解析, Cookie处理, 权限验证, 参数验证, 异常处理等, 但对于 Web 应用而言, 并不希望接触到这么多细节性的处理, 因此引入中间件来简化和隔离这些基础设施与业务逻辑之间的细节, 让开发者能够关注在业务的开发上, 以达到提升开发效率的目的
中间件的行为比较类似 java 中过滤器的工作原理, 就是在进入具体的业务处理之前, 先让过滤器处理. 它的工作模型
如下:
图片描述

简单例子:

const express = require('express')
const app = express()

app.get('/', (req, res) => {
	console.log('客户端访问啦')
	res.send('/')
})
app.get('/register', (req, res) => {
	console.log('客户端访问啦')
	res.send('/register')
})

如果我想在每一个接口里都加上 console.log('客户端访问啦')这句代码, 而且有成千上万个接口,不可能每个都手动进行添加吧?

app.use((req, res, next) => { // 挂载
	console.log('客户端访问啦')
	next() // 继续去执行下面的逻辑处理
})

这样做, 一旦客户端访问了接口, 我们就交个use这个方法来执行, 这个方法需要写在所有接口的后面, 不然会影响下面代码的执行

Express中间件分类
  • 应用程序级别中间件
  • 路由级别中间件
  • 错误处理中间件
  • 内置中间件
  • 第三方中间件
app.use('/user', router) // 加前缀
express.router()

使用 express.router 该类创建模块化, 可安装的路由处理程序, 实例是一个 Router 完整的中间件和路由系统

const express = require('express')
const router = express.Router()

// 挂载
router.use((req, res, next) => {
  console.log('Time: ', Date.now())
  next()
})
router.get('/about', (req, res) => {
  res.send('Birds home page')
})
module.exports = router // 暴露

然后, 在应用程序中加载路由器模块

const router = require('./router')
app.use('/api', router)

该应用程序现在将能够处理对/api和的请求/api/about,以及调用timeLog特定于路由的中间件函数。

Express路由与响应方法

接收所有请求

app.all('/xx', (req, res) => {
	res.send('xxx')
})

字符作用

// ? 号前面可有可无, 都可通过
app.get('/us?er', (req, res) => {})
// + 号前面的字符可以添加无数个 列如: `usssser`  也可通过
app.get('/us+er', (req, res) => {})
// * 号是通配符, us与er之间添加什么都可通过
app.get('/us*er', (req, res) => {})

可使用链式调用

app.get('/',(req, res) => {}).post('/video', (req, res) => {})
项目基础设计搭建优化
const express = require('express')
const app = express()

// 解析客户端发过来的json请求
app.use(express.json()) // 解析get
app.use(express.urlencoded) // 解析post

跨域
安装: npm install cors
app.use(cors())

日志模块
安装: npm install morgan
app.use(morgan('dev'))

Mongoose 数据库模型

Mongoose 对 MongoDB 进行二次封装, 操作更简单
安装: npm install mongoose

const mongoose = require('mongoose')
const main = async () => {
	await mongoose.connect('mongodb://127.0.0.1:27017/test')
}
main().then(res => {
	console.log('mongo连接成功')
}).catch(err => {
	console.log(err)
	console.log('mongo连接失败')
})
// 有返回, 没有创建 创建模型对象
const cc = new mongoose.Schema({
	username: {
		type: String,
		required: true
    },
    age: {
		type: Number,
		required: true
    }
})
// 创建集合 首字母大写
const ccModel = mongoose.model('Cc', cc)
// 向该集合添加数据
const u = new ccModel({username: '赟赟', age: 23})
// 保存
u.save(); 
用户注册的密码加密

使用md5加密, node 官方提供了一个 crypto的一个内置中间件

const crypto = require('crypto')
const d = crypto.createHash('md5').update('by' + '密码').digest('hex')
console.log(d); // 加密之后的密文
客户端提交数据安全效验

安装: npm install express-validator

学习心得

通过这章学习, 明白了, 后端如何接收到前端传入的登录信息与效验

课程截图

图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消