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

原文地址:https://www.cnblogs.com/tianxiaxuange/p/10157205.html

时间: 2024-11-10 15:11:17

Node.js_express_中间件 middleware_登录/注册实例的相关文章

Nodejs学习总结 -Express 登录注册实例(二)

项目创建后,我们来做个登录注册实例,详细操作步骤如下. 1.新建项目demo ,具体操作步骤参考上一章内容 https://www.cnblogs.com/Anlycp/ 2.添加mysql和session包 package.json dependencies中添加下面内容后输入npm install进行安装 "mysql": "latest", "express-session" : "latest", 输入下面语句进行和上

vue-cli——vue-resource登录注册实例

前言 使用vue-resource请求接口非常方便,在使用前需安装vue-resource依赖并在入口文件main.js中声明. 实例功能简述 本实例只有简单的两个模块:登录和注册,主要演示如何用vue-resource请求接口以及后期逻辑书写.各个功能如下所示:登录模块登录-用户不存在 登录-密码错误 登录-成功 注销登录 注册模块 项目功能梳理 在创建项目之前,我们先理一下整个项目的功能模块.登录模块1.用户输入用户名及密码,调用接口??1.1用户名未找到,提示用户"用户名不存在"

Vue(vue+node.js+mongodb)_登录注册(密码登录)

一.前言 1.密码登录(分析) 2.验证码部分 3.提交表单 4.保存显示 5.完善功能,首页中如果登录成功之后显示的是图标,没有登录显示的是“注册登录” 6.处理bug(当我们一刷新之后当前登录的信息都没有了) 二.主要内容 1.密码登录(分析) (1)第一步用户输入先提交登录表单信息 2.验证码部分 这里显示的验证码,在通过异步调用获取到,并且在后端存进session中 (1)前端部分 <!--获取验证码:前端--> <input type="text" maxl

JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JSP+JavaBean开发模式,通过这个用户登录注册程序综合案例,把之前的学过的XML.Xpat

node.js实现简单的登录注册页面

首先需要新建四个文件 一个服务器js 一个保存数据的txt 一个登陆.一个注册页面html 1.注册页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>regist</title> </head> <body> <div> <label for="us

Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册

通过 vue-cli3.0 + Element 构建项目前端,Node.js + Koa2 + MongoDB + Redis 实现数据库和接口设计,包括邮箱验证码.用户注册.用户登录.查看删除用户等功能. 1. 技术栈 前端 初始化项目:vue-cli3.0 组件库:Element-ui 路由控制/拦截:Vue-router 状态管理:Vuex 服务端 运行环境:Node.js 后台开发框架:Koa2 路由中间件:Koa-router 发送邮件: nodemailer HTTP通讯 接口请求/

Java中间件之RMI及实例介绍 &middot; zijian‘s blog

RMI介绍 ??远程方法调用(Remote Method Invocation)是Sun公司规定的允许在不同的JAVA虚拟机之间进行对象间通信的一种规范.在RMI中,JVM可以位于一个或多个计算机上,其中一个JVM可以调用存储在另一个JVM中的对象方法.这就使得应用程序可以远程调用其他对象方法,从而达到分布式计算的目的,以共享各个系统的资源和处理能力. ??除了RMI外,基于JAVA的实现不同JAVA虚拟机上的应用程序之间通信技术主要有两种:套接字和JAVA消息服务(JMS). ??使用套接字是

Android实战简易教程-第三十二枪(自定义View登录注册界面EditText-实现一键清空)

自定义View实现登录注册页面的EditText一键清空功能,效果如下: 输入框输入文字后自动出现一键清空键,输入框文字为空时,一键清空键隐藏,下面我们看一下如何通过自定义View实现这一效果. 看一下DeletableEditText.java: package com.example.testview; import android.content.Context; import android.graphics.drawable.Drawable; import android.text.

javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JSP+JavaBean开发模式,通过这个用户登录注册程序综合案例,把之前的学过的XML.Xpat