Node.js_express_中间件 middleware_登录/注册实例

静态资源:

都写死了的资源,如 css,html

 

解析规则:

所有路由中间件都在一个数组中,js 引擎会按照代码先后顺序添加路由中间件

当请求发送到服务器时,服务器获取当前的请求信息(请求方式、请求路由路径)

遍历数组,找到第一个匹配请求路由路径请求方式必须完全一致)到的路由或者中间件,执行其回调函数

意味着: 声明多个同名路由时,始终解析第一个

如果没找到,返回一个状态码为 404 的响应, Cannot GET / xxx    或者  Cannot POST / xxx

 

中间件 middleware

当有多个路由做同一件事情,这时就会交给中间件去完成

本质上就是一个函数 (request, response, next)=>{}

express 框架 实现服务器    完全是由 路由 和 中间件 组成的

需要调用 next() 方法,才会接下来处理下面的中间件或者路由,否则卡住了

  • app.use(express.static(‘./public‘));    //默认调用next

接受请求,通过分析参数,找到了 public 对应资源就返回响应

将该文件夹下所有静态资源暴露出去

例如: 文件夹有 

public/index.html

public/css/index.css

就可在浏览器访问

127.0.0.1:3000/index.html

127.0.0.1:3000/css/index.css

  • app.use(express.urlencoded({extended: true}));    //默认调用next

解析 请求体 数据,结果数据挂载到 req.body 上

  • 实例分析: 
  • // 1. 导入 express 模块const express = require(‘express‘); // 2. 创建 app 应用对象const app = express(); // 3. 写业务逻辑:处理请求,返回响应  /**** 配置内置 中间件 (express 自带) ****/ // 将该文件夹下所有静态资源暴露出去
    // 接受请求,通过分析参数,找到了
    public 对应资源就返回响应 app.use(express.static(‘./public‘)); // public 下有 index.html css/index.css // 可在127.0.0.1:3000/index.html css/index.css // 解析请求体数据,结果数据挂载到 req.body 上 app.use(express.urlencoded());
    // 默认调用 next() /**** 以上两个一般结合使用 ****/

    // 中间件默认能接收并处理所有请求
    // 需要调用 next() 方法,才会接下来处理下面的中间件或者路由,否则卡住了
    app.use((request, response, next)=>{
    next(); // 调用下一个中间件或者路由
    });
    /**************************************/
    // route 路由的组成: app.请求方式(‘/路由路径‘, 句柄函数); app.get(‘/login‘, (request, response)=>{ console.log(request.body); response.send(‘Login Page Response!‘); }); app.post(‘/register‘, (request, response)=>{ console.log(request.query); response.send(‘Register Page Response!‘); }); // 4. 监听端口号:一个端口号 有且只能运行 一个程序app.listen(3000, err=>console.log(err?err:‘服务器启动成功 : http://127.0.0.1:3000‘));

 

登录/注册实例

  • 什么时候用 get ,什么时候用 post?

1. 凡是涉及到用户的隐私数据,就用 post

2. 其他就用 get

  • 业务逻辑

1. 导入 exoress 框架

2. 注册路由

由于默认访问不到静态资源,所以1引入中间件,暴露静态资源

默认不能解析 请求体 ,则2引入中间件,解析 请求体 数据(优先级低于上一中间件,避免多余分析)

获取用户提交的表单数据        req.body

对数据库进行正则验证(验证数据的规范)    

检查用户名是否存在

连接数据库

User.findOne();

保存在数据库中        

User.create();

无论 失败/成功 都要返回

3. 登录路由

4. 设置端口号,启动服务器监听

  • 项目目录

/public/register.html

/public/login.html

app.js

相关文章