失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【前端——Node.js】:Express 数据库与身份认证

【前端——Node.js】:Express 数据库与身份认证

时间:2022-10-03 23:35:00

相关推荐

【前端——Node.js】:Express 数据库与身份认证

一、Express

1.express路由

(1)路由

路由就是映射关系。在Express中,路由是指客户端的请求与服务器处理函数之间的映射关系

(2)路由匹配的过程

(3)模块化路由

为了方便对路由进行模块化管理,Express不建议将路由直接挂载到app上,而是推荐路由抽离为单独的模块。因为直接挂载到app上,会导致后期代码量太大。

①创建路由模块

②注册路由模块

(4)为路由模块添加前缀

意思就是,加上访问前缀,在访问的时候,必须加上此前缀才可以访问。在没加的时候,不用加此前缀可以访问。

2.Express中间件

2.1

(1)中间件:特指业务流程的中间处理环节

(2)Express中间件的调用流程

中间件的作用:对请求进行预处理

一个请求到达Express的服务器之后,可以连续调用多个中间件

(3)中间件的格式

(6)next函数的作用

是实现多个中间件连续调用的关键,他表示把流转关系转交给下一个中间件或路由

2.2

(1)定义中间件函数

const express=require('express')const app = express()//1定义一个最简单的中间件函数const mw=function(req,res,next){next()//把流转关系,转交给下一个中间件或路由}app.listen(80,function(){console.log('http://127.0.0.1');})

(2)全局生效的中间件

就是客户端发起的任何请求,到达服务器之后,都会触发的中间件,叫做全局生效的中间件。

方法:通过调用app.use(中间件函数),即可定义一个全局生效的中间件,例:

//1定义一个最简单的中间件函数const mw=function(req,res,next){next()//把流转关系,转交给下一个中间件或路由}//注册为全局生效的中间件app.use(mw)

简化形式:

app.use((req,res,next)=>{ next()})

(3)中间件的作用

(4)定义多个全局中间件

使用app.use()定义多个全局中间件,客户端请求到达服务器之后,会按照定义的先后顺序依次进行调用。

例:就会先出现第一个,再出现第二个

const express=require('express')const app=express()//定义第一个全局中间件app.use((req,res,next)=>{console.log('调用了第一个全局中间件');next()})//定义第二个全局中间件app.use((req,res,next)=>{console.log('调用了第二个全局中间件');next()})app.get('/user',(req,res)=>{res.send('User page.')})

(5)局部生效的中间件

不使用app.use()定义的中间件,叫做局部生效的中间件

const mw1=((req,res,next)=>{console.log('调用了局部生效的中间件');})app.get('/',mw1,(req,res)=>{res.send('Home page.')})app.get('/user',(req,res)=>{res.send('User page.')})//此时mw1这个中间件只在第一个路由当中生效,而不会影响下一个,也就是说,第二个不会出现调用了局部那句话

(6)定义多个局部中间件

执行顺序是从左到右,可以写很多个

(7)注意事项

2.3、中间件的分类

(1)应用级别的中间件

应用级别的中间件: 通过app.use()或者app.get()或者app.post(),绑定到app实例上的中间件。只要绑定到了app上都是。

(2)路由级别的中间件

绑定到express.Router()实例上的中间件。用法和应用级别的中间件没有任何区别。

区别:应用级别的是绑定到app上,路由级别是绑定到router上

(3)错误级别的中间件

注意!!!一定要把错误级别的中间件放到所有路由之后,不然发生错误往后找的时候,是没办法找到的,就会报错

const express=require('express')app.get('/',(req,res)=>{throw new Error('服务器内部发生了错误')//人为制造错误res.send('Home page.')//当发生错误之后,就不会执行后面的send,会立即找到错误级别的中间件,如果没有错误级别的中间件,那么就没有客户端响应})//加了这个,就会给客户端响应这个里面的Error+err.messageapp.use((err,req,res,next)=>{console.log('发生了错误'+err.message);//在服务器打印错误信息res.send('Error:'+err.message)})app.listen(80,function(){console.log('server running at http://127.0.0.1');})

(4)Express内置的中间件

可以用req.body这个属性,来接收客户端发送过来的请求体数据。默认情况下,如果不配置表单数据的中间件,则req.body默认等于undefined。所以想要接收,必须先进行配置。

(5)第三方的中间件

2.4自定义中间件

(1)监听req的data事件

(2)监听req的end事件

比如,汉字会转成%96%es这样看似奇怪的样子,我们需要把他解析成对象格式

(3)使用querystring模块解析请求数据

(4)将解析出来的数据对象挂载为req.body

(5)将自定义中间件封装为模块

3.使用Express写接口

先创建基本的服务器

创建API路由模块

编写GET接口

编写POST接口

在线的jQuery:

4.2CORS跨域资源共享

(1)接口的跨域问题

就比如,接口是由http协议向外提供的,然而网页是通过files向外提供,就存在了跨域问题

(2)使用cors中间件解决跨域问题

(3)什么是CORS

(4)CORS响应头部——Access-Control-Allow-Origin

(5)CORS响应头部——Access-Cotrol-Allow-Headers

(6)CORS响应头部——Access-Cotrol-Allow-Methods

(7)CORS请求分类

客户端在请求CORS接口时,根据请求方式和请求头的不同,可以将CORS的请求分为两大类:

①简单请求

②预检请求

简单来说,就是和简单请求对立的请求

③区别:

例如:这个就是多出来的OPTION预检请求

(8)JSONP接口

实现步骤:

(9)在网页当中使用jQuery发起JSONP请求

二、数据库与身份认证

1.数据库(database)

1.1

是用来组织、存储和管理数据的仓库

数据库管理系统:对数据库中的数据进行新增、查询、更新、删除等操作

1.2常见的数据库及分类

1.3传统数据库的数据组织结构

数据组织结构:就是数据以说明样的结构进行存储

(1)Excel的数据组织结构

由工作薄(整个Excel)、工作表(相当于在Excel里面的单个文件)、数据行、列四大部分组成

(2)传统数据库的数据组织结构

由数据库(database)、数据表(table)、数据行(row)、字段(field)四大部分组成

(3)实际开发中库、表、行、字段的关系

2.安装并且配置MySQL

MySQL在Windows环境下的安装

2.1使用MySQL Workbench管理数据库

(1)连接数据库

点击:

(2)了解主界面的组成部分

注意使用时,数据库列表要切换到Schemas

(3)创建数据库

数据库名称千万不要包含中文和空格!!!!

(4)创建数据表

点击ColumnName创建,点击已创建的之后,可以在下方看到,Comments,为了方便我们可以在里面写注释帮助我们理解。

status,defult写入0,就是0表示状态正常,1表示被禁用

(5)向表中写入数据

2.2使用SQL管理数据库

(1)SQL

SQL能做什么:

2.3SQL的SELECT语句

(1)语法

就是黄颜色部分,注意其他的部分是敏感的

(2)SELECT*

点击左上角第一个新建,点击小闪电运行。

(2)SELECT列名称

2.4SQL的INSERT INTO语句

(1)语法

例如:

2.5SQL的UPDATE语句

语法:

示例:

当更新某一行的若干列时:

2.6SQL的DELETE语句

语法:

例:

2.7SQL的WHERE子句

2.8SQL的AND和OR运算符

2.9SQL的ORDER BY语句

(1)

例:

降序就是把asc换成desc

(2)多重排序

2.10SQL的COUNT(*)函数

(1)语法

例:

(2)使用AS为列设置别名

3.在Express中操作MySQL

(1)步骤:安装mysql——通过mysql模块连接到mysql数据库——通过mysql模块执行SQL语句

(2)安装mysql 模块

(3)配置mysql模块

(4)测试mysql模块能否正常工作

4.2使用mysql模块操作mysql数据库

(1)查询数据

(2)插入数据

插入数据的便捷方式:

(3)更新数据

更新数据的便捷方式:

(4)删除数据

(5)标记删除

8.4—8.5学习汇报与总结

1.学习体会与感受

完成了学习任务。主要的问题是,我还没有解决我的npm只要一执行一堆error(看着一堆err陷入沉思),所以一些都是没有成功执行的,解决完我的error之后,代码需要运行一遍,看看有没有问题。

2.8.6-8.8学习计划

Node.js学习就只剩最后项目搭建示例讲解,学习完成之后,开始学习VUE。

如果觉得《【前端——Node.js】:Express 数据库与身份认证》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。