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.
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.
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.
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!