Configuración

Ahora vamos a instalar varias dependencias que harán nuestra configuración de Express.js más profesional para un futuro paso a producción

En la raíz de nuestro proyecto ejecutamos la siguiente linea:

# install dependencies
npm i -S compression body-parser method-override errorhandler

Compression

Cuando utilizamos ExpressJS para alojar nuestro servidor, hay una pequeña mejora de rendimiento que podemos hacer (funciona de forma universal en cualquier tipo de servidor: plantillas HTML a API REST de JSON para servidores de imágenes), que es para habilitar la compresión GZIP.

Con este middleware podremos obtener una compresión GZIP de forma muy fácil para nuestro servidor.

Body Parser

Usualmente el cuerpo de una petición (payload), contiene información desde una petición tipo POST cuando un cliente desea crear una nueva entidad/registro o actualizar uno existente mediante PUT. Los desarrolladores quienes implementan servidores, requieren frecuentemente accesar a la información del cuerpo de dicha petición.

El modulo npm body-parser nos permite realizar esta tarea. No es necesario programarla. Luego de instalar esta dependencia debemos habilitar json() así como url-encode como middlewares para convertir datos a JSON.

Method Override

Cuando intentamos usar PUT y DELETE en HTML, tenemos un problema. Los navegadores admiten PUT y DELETE, pero solo mediante la solicitud a través de AJAX, pero no a través del envío de 'formulario HTML. Este middleware nos ayudará a resolver esto.

Errorhandler

Este middleware solo debe utilizarse en un entorno de desarrollo, ya que los seguimientos de la pila de errores completos y los detalles internos de cualquier objeto pasado a este módulo se devolverán al cliente cuando se produzca un error. Cuando se proporciona un objeto a Express como un error, este módulo mostrará la mayor cantidad posible de este objeto, y lo hará mediante la negociación de contenido para la respuesta entre HTML, JSON y texto sin formato.

Configurando Express.js

Luego de tener claro los middleware anteriores vamos agregarlos a nuestra configuración base de Express.js, para eso vamos a crear un archivo en config/express.js

config/express.js
/**
 * Express configuration
 */

const compression = require('compression');
const bodyParser = require('body-parser');
const methodOverride = require('method-override');
const errorHandler = require('errorhandler');

module.exports = (app) => {
  const env = app.get('env');

  app.use(compression());
  app.use(bodyParser.urlencoded({ extended: false, limit: '50mb' }));
  app.use(bodyParser.json({ limit: '50mb' }));
  app.use(methodOverride());

  if (env === 'development' || env === 'test') {
    app.use(errorHandler()); // Error handler - has to be last
  }
};

Actualizando app.js

Ahora vamos agregar nuestra configuración de Express.js a nuestra aplicación, vamos actualizar el archivo app.js con dos lineas:

app.js
// Add this line
const expressConfig = require('./config/express');

// Add this line
expressConfig(app);

Finalmente nuestro archivo app.js debe quedar similar a este:

const express = require('express');
const http = require('http');

// New line
const expressConfig = require('./config/express');

// Setup server
const app = express();
const server = http.createServer(app);

// New line
expressConfig(app);

const config = {
  port: 8080,
  ip: '127.0.0.1',
};

// Start server
function startServer() {
  app.shoppingCartBK = server.listen(config.port, config.ip, () => {
    console.log(`Express server listening on ${config.port}, in ${app.get('env')} mode`);
  });
}

setImmediate(startServer);

// Expose app
module.exports = app;

Después de hacer esto recuerda hacer un nuevo commit.

Last updated