【前端——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.message
app.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:staticfile.org
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、数据库与身份认证相关推荐
- Node.js 学习之数据库与身份认证
数据库与身份认证 文章目录 数据库与身份认证 1.SQL 的相关学习 1. SQL 的概念 2. SQL 语句学习 a. 查询数据(select).插入数据(insert into).更新数据(upd ...
- 数据库与身份认证(数据库的基本概念,安装并配置 MySQL,MySQL 的基本使用,在项目中操作 MySQL,前后端的身份认证)
theme: channing-cyan 数据库与身份认证 1. 数据库的基本概念 1.1 什么是数据库 数据库(database)是用来组织.存储和管理数据的仓库. 当今世界是一个充满着数据的互联网 ...
- 数据库与身份认证——黑马课程笔记
数据库与身份认证 1.数据库的基本概念 2.安装并配置MySQL 3.MySQL的基本使用 3.1使用MySQL workbench管理数据库 1.连接数据库 2.了解主界面的组成部分 3.创建数据库 ...
- Node.js 使用 JWT 进行用户认证
代码地址如下: http://www.demodashi.com/demo/13847.html 运行环境 该项目基于 node(v7.8.0版本以上) 和 mongodb 数据库,因此电脑上需要安装 ...
- 10 数据库与身份认证
10. 数据库与身份认证 1. 在项目中操作数据库的步骤 安装操作MYSQL数据库的第三方模块(mysql) 通过mysql 模块连接到MYSQL数据库 通过mysql模块执行SQL语句 2. 代码实 ...
- 从零开始搭建Node.js, Express, Ejs, Mongodb服务器
http://www.toolmao.com/nodejs-express-ejs-mongodb-server 本文改自非鱼的<[翻译]前端开发人员入门指南,从零开始搭建Node.js, Ex ...
- TWaver HTML5 + Node.js + express + socket.io + redis(五)
接上一回TWaver HTML5 + Node.js + express + socket.io + redis(四), 这一篇您将了解到 1. 如何保存更改后的拓扑数据 (包括新增的, 修改的, 删 ...
- Node.js Express+Mongodb 项目实战
Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很 ...
- 使用Node.js express 开发上传文件/图片api接口
我是傲夫靠斯,欢迎关注我的公众号[前端工程师的自我修养],每天更新. 今天我们来搞一个Node.js Express的上传文件功能,我使用了busboy这个库. Busboy是一个基于事件的文件流解析 ...
最新文章
- 套接字编程--TCP
- 给JFinal添加 Sqlite 数据库支持
- sql server 替换有反斜杠的字符串_SQL注入思维导图
- 3、面向对象-继承-多态
- Divide and conquer:Drying(POJ 3104)
- mysql cluster 外键_Mysql外键约束
- # 20155337 《Android程序设计》实验四实验报告
- 保存数组类型数据_「Java」基础12:什么叫数组?
- 计算机网络之JSONP跨域
- vc++HOOK详细讲解
- 前端 js 基于react ts的excel文件模板下载 文件导入、导出
- PTA (特立独行的幸福)
- Aras Innovator: 如何在Form中放入图片
- 牛皮凉席发霉如何处理?
- GPRS远程开关 1 综述
- 刷脸支付帮商户降低人力成本引流圈客
- 师兄写的一个JAVA播放器的源代码(转)
- linux是实时系统还是分时操作系统
- springboot(一):构建最简单的springboot项目
- oracle 联通 offer,29岁社招拿到中国联通offer,该不该去?