Conseguir el nodejs expreso Middleware

expreso Middleware

Express es una ruta y un marco de middleware web, su propia función en raras ocasiones. El middleware es un conjunto de llamadas de función de la naturaleza de aplicaciones de Express.

I. Introducción

Una petición al servidor, vaya a través de un ciclo de vida, el servidor debe: la escucha de peticiones - Resolución de solicitud - en respuesta a la petición, el servidor cuando se trata de este proceso, a veces muy complicado, estos complejos negocio aparte en una sub-sección, sub-sección es un entresuelo. Para el procesamiento de solicitudes, antes de emitir la respuesta puede responder a la solicitud y la etapa para realizar algunas operaciones y el resultado de procesamiento puede ser pasado a la siguiente etapa de procesamiento

En pocas palabras, expreso middleware (middleware) es el controlador de solicitudes HTTP. Su principal característica es un middleware procesado, antes de pasar al siguiente middleware. instancia de aplicación durante el funcionamiento, llamará a una serie de middleware.

img

Cada middleware de ejemplo App, tres parámetros, seguido por el objeto de solicitud (que representa una petición HTTP), la respuesta objeto (que representa una respuesta HTTP), siguiente función de devolución de llamada (que representa un próximo intermedio). Cada productos de middleware para la solicitud HTTP (solicitud de objeto) de procesamiento, y decide si para llamar al método siguiente, entonces el objeto de la petición a la siguiente intermedio. La imagen siguiente diagrama con más puntos:

img

La figura puede verse que el agua de proceso del usuario, es una petición HTTP, entonces a través de una serie de procesamiento intermedio, el proceso vuelve a dar el resultado final.

PAPEL

describe middleware expreso

1. ejecutar ningún código.
2. Modificar de petición y respuesta objetos.
3. Fin petición - ciclo de respuesta.
4. Llame a la siguiente pila de middleware

III. Clasificación

1. Aplicación Middleware
ruta Middleware 2.
3. Error de procesamiento de middleware
4. middleware incorporado
5. El middleware para la tercera
middleware 6. personalizada

IV. Middleware

1. El uso global

const express = require("express");
const app = express();
/**
 * 全局使用,
 * 注意点,代码的顺序问题
 *  app.use 的语法
 *      app.use(PATH, [...HANDLER])
 *        - PATH 路径前缀,默认是 /
 *        - HANDLER   中间件函数,可以是多个
 */
app.use((req, res, next) => {
    console.log(1);
    //一定要使用next(),才会将控制器丢给下个中间件
    next();
}, (req, res, next) => {
    console.log(2);
    next();
}, (req, res, next) => {
    console.log(4);
    next();
});

app.get('/', (req, res, next) => {
    console.log(3);
    res.send("hello");
});

app.listen(3000, () => {
    console.log("服务启动成功");
});

2. Cuando se usa a nivel mundial, tiene que haber una condición prefijo

/**
 * 全局调用中间件,但是有前缀条件
 */

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

//这里是全局中间件  前缀条件是必须是有/hello的路由
app.use('/hello', (req, res, next) => {
  console.log('中间件1')
  next()
})

// GET http://localhost:3000/
app.get('/', (req, res) => {
  console.log('2')
  res.send('hello')
})

// GET http://localhost:3000/hello/world
app.get('/hello/world', (req, res) => {
  console.log(3)
  res.send('hello 1')
})


app.listen(3000, () => {
  console.log('服务启动成功')
})

3. En el caso de enrutamiento, llamadas locales middleware

/**
 * 局部调用中间件(针对某个路由单独去调用)
 */

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

// 1. 定义一个中间件函数
const hello = (req, res, next) => {
  console.log('hi,大家好,我是渣渣辉')
  next()
}

//这里局部调用
// GET http://localhost:3000/
app.get('/', hello, (req, res) => {
  res.send('hello')
})

// GET http://localhost:3000/world
app.get('/world', (req, res) => {
  res.send('world')
})

app.listen(3000, () => {
  console.log('服务启动成功')
})

4. middleware personalizado

const express = require('express');

const app = express();

// 自定义请求日志中间件
const logger = (req, res, next) => {
    console.log("Request Url:" + req.originalUrl);
    console.log("Request Method:" + req.method);

    console.log("Request Date:" + new Date().toLocaleString());
    // 必须要写
    next();
}

//自定义中间件,程序延迟执行
const setTimer = (timeout = 5000) => {
    return (req, res, next) => {
        setTimeout(() => {
            //延迟timeout执行
            console.log(`延迟${timeout}秒执行`);
            next();
        }, timeout);
    }
}

//全局调用中间件
app.use(logger);
app.use(setTimer(2000));

app.get('/hello', (req, res, next) => {
    console.log("进入get");
    res.send("结束");
});

app.listen(3000, () => {
    console.log("服务启动成功");
});

En resumen, en el desarrollo real, en el middleware en el extremo qué efecto? Cuando se envía una solicitud al servidor, su ciclo de vida es recibir una petición (petición), entonces el proceso del servidor, la respuesta de transmisión (respuesta) después del tratamiento ha terminado y este proceso de procesamiento de back-end servicio tenía que hacer un documento, cuando se imagina compleja lógica de negocio, con el fin de aclarar y facilitar el mantenimiento, la necesidad de hacer frente a los puntos sobre las cosas, hacer la tarea en varias partes, y cada parte es un middleware.

método 5.app.use

El método de uso se ha registrado en el middleware expreso, es decir aquellos que se llaman middleware deben utilizar métodos para obtener por encima de la cuarta código de punto se puede observar, el uso de app.use método, registró un middleware de 2 a cerca http solicitud a la primera llamada de middleware registrador, y luego hacer el tratamiento adecuado, el último método, el control se pasa por al lado () para un segundo middleware y luego continuar, si no al lado (), el programa ha sido suspendió el pasado que no responde

Publicado 18 artículos originales · ganado elogios 49 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/liuqiao0327/article/details/105153247
Recomendado
Clasificación