Todas las Noticias en Películas, Avances de Películas y Reseñas.

Node.js HTTP: Todo lo que necesitas saber

En este blog de Node.js HTTP, discutiremos Nodo.js y entregar productos de software usándolo. Además, discutiremos cómo puede iniciar un servidor HTTP Node.js simple y comenzar a atender solicitudes.

Lea también: Node js en alojamiento: las mejores plataformas de alojamiento para 2021

Módulo de servidor HTTP Node.js

Interactuará con los módulos http/https incorporados cuando comience a crear aplicaciones basadas en HTTP en Node.js. Ahora crearemos el primer servidor HTTP Node.js. Y para eso, requerimos el módulo http y vinculamos su servidor al puerto 3000 para escuchar.

<em>// content of index.js</em>
const http = require('http')
const port = 3000

const requestHandler = (request, response) => {
  console.log(request.url)
  response.end('Hello Node.js Server!')
}

const server = http.createServer(requestHandler)

server.listen(port, (err) => {
  if (err) {
    return console.log('something bad happened', err)
  }

  console.log(`server is listening on ${port}`)
})

Comencemos con lo siguiente:

$ node index.js

Debes prestar atención a algunas cosas aquí:

  • requestHandler: puede invocar esta función cada vez que una solicitud llega al servidor. Cuando visite localhost:3000 desde su navegador, aparecerán dos mensajes de registro en su pantalla. En primer lugar, para / y en segundo lugar para favicon.ico.
  • si (err): manejo de errores: en caso de que el puerto ya esté ocupado u otras razones, el servidor no puede iniciarse, se le notificará aquí.

El módulo http es de bajo nivel que crea una aplicación web compleja y el uso del fragmento de código anterior puede consumir mucho tiempo. Debido a esto, las personas generalmente eligen un marco para trabajar con nuestros proyectos. Tiene varias opciones para recoger, como las siguientes:

Vamos a utilizar Express de ahora en adelante para este blog, ya que encontrará la mayoría de los módulos en NPM para Express.

Recomendado:  ¿El teléfono sigue sonando? Pruebe estas 7 soluciones

Expresar

El marco web para Node.js que es rápido, sin opiniones y minimalista es http://expressjs.com/. Puede agregar Express a su proyecto en NPM mediante la instalación:

$ npm install express --save

Después de la instalación de Express, crearemos una aplicación similar a la anterior:

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

app.get('/', (request, response) => {
  response.send('Hello from Express!')
})

app.listen(port, (err) => {
  if (err) {
    return console.log('something bad happened', err)
  }

  console.log(`server is listening on ${port}`)

Hay una gran diferencia que debe notar, ya que Express le proporciona un enrutador de forma predeterminada. No necesita verificar manualmente la URL para decidir qué hacer. Sin embargo, puede definir el enrutamiento de la aplicación con app.get, app.post, app.put, etc. en su lugar. Estos se traducen a los verbos HTTP correspondientes. Express implementa uno de los conceptos más poderosos llamado patrón de middleware.

Middlewares

Puede entender los middlewares pensando en ellos como canalizaciones de Unix, pero para solicitudes HTTP.

A partir del diagrama, puede comprender cómo pasa una solicitud a través de una aplicación Express. Puede viajar a tres middlewares. Cada uno de ellos puede modificarlo, luego, según la lógica comercial, el tercer middleware envía una respuesta o puede ser un controlador de ruta. Puede hacerlo de la siguiente manera en su práctica:

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

app.use((request, response, next) => {
  console.log(request.headers)
  next()
})

app.use((request, response, next) => {
  request.chance = Math.random()
  next()
})

app.get('/', (request, response) => {
  response.json({
    chance: request.chance
  })
})

app.listen(3000)

Debes tener en cuenta lo siguiente aquí:

  • app.use: De esta forma se pueden definir middlewares. Puede tomar una función con tres parámetros: en primer lugar, la solicitud, en segundo lugar, la respuesta y, por último, es la próxima devolución de llamada.
  • El primer middleware puede simplemente registrar los encabezados y llamar al siguiente al instante.
  • El segundo middleware puede agregarle una propiedad adicional. La gente lo considera como una de las características más poderosas del patrón de middleware.
Recomendado:  CarynAI tiene más de 11.000 novios

Manejo de errores

Es necesario que el manejo de errores sea correcto en todos los marcos. Debe crear una función de middleware especial en Express para hacerlo: un middleware con cuatro parámetros:

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

app.get('/', (request, response) => {
  throw new Error('oops')
})

app.use((err, request, response, next) => {
  <em>// log the error, for now just console.log</em>
  console.log(err)
  response.status(500).send('Something broke!')
})

Debes tener en cuenta lo siguiente aquí:

  • La función del controlador de errores debe ser la última función que se agregue con app.use.
  • El controlador de errores tiene una próxima devolución de llamada que puede usar para encadenar varios controladores de errores.

Representación de HTML

En este blog, hemos entendido cómo enviar respuestas JSON hasta ahora. Ahora aprenderemos a renderizar HTML de la manera más fácil. Lo haremos usando el paquete handlebars con el envoltorio express-handlebars.

En primer lugar, debemos crear la siguiente estructura de directorios:

├── index.js
└── views
    ├── home.hbs
    └── layouts
        └── main.hbs

Después de hacerlo, complete index.js con el fragmento mencionado a continuación:

<em>// index.js</em>
const path = require('path')
const express = require('express')
const exphbs = require('express-handlebars')

const app = express()

app.engine('.hbs', exphbs({
  defaultLayout: 'main',
  extname: '.hbs',
  layoutsDir: path.join(__dirname, 'views/layouts')
}))
app.set('view engine', '.hbs')
app.set('views', path.join(__dirname, 'views'))

El código anterior está inicializando el motor del manillar y configurando el directorio de diseños en vistas/diseños. Todos sus diseños se almacenarán en este directorio. Después de realizar esta configuración, podrá colocar su html inicial en main.hbs. Iremos con lo siguiente para mantener las cosas simples:

<html>
  <head>
    <title>Express handlebars</title>
  </head>
  <body>
    {{{body}}}
  </body>
</html>

Aquí debería notar el marcador de posición {{{body}}} ya que aquí es donde se colocará su contenido. ¡Ahora vamos a crear home.hbs!

<h2>Hello {{name}}<h2>

Por último, debe agregar un controlador de ruta a nuestra aplicación Express:

app.get('/', (request, response) => {
  response.render('home', {
    name: 'John'
  })
})

El método render tiene los siguientes dos parámetros:

  • En primer lugar, el nombre de la vista,
  • En segundo lugar, los datos que desea representar.
Recomendado:  Sharon Stone se queja después de haber bloqueado la cuenta en la aplicación de citas

Después de llamar a ese punto final, terminará con lo siguiente:

<html>
  <head>
    <title>Express handlebars</title>
  </head>
  <body>
    <h2>Hello John<h2>
  </body>
</html>

Depuración Express

A veces, las personas necesitan ver qué sucede con Express cuando la aplicación se está ejecutando. Puede hacerlo pasando la siguiente variable de entorno a Express: DEBUG=express*. Puede iniciar su servidor HTTP Node.js usando:

$ DEBUG=express* node index.js

Conclusión

Con la ayuda de este blog, puede configurar su primer servidor HTTP Node.js desde cero. Le recomendamos que comience con Express y luego continúe para experimentar. ¡Gracias por leer nuestro blog!

Tabla de Contenido