https://d226lax1qjow5r.cloudfront.net/blog/blogposts/5-ways-to-build-a-node-js-api/Blog_Node-js_APIs_1200x600.png

5 formas de crear una API Node.js

Publicado el May 11, 2021

Tiempo de lectura: 28 minutos

Este artículo le ayudará a construir una pequeña API de cinco maneras, utilizando Node.js y cuatro frameworks populares.

Express.js es uno de los muchos frameworks HTTP disponibles para Node.js. Lo utilizamos para muchas de nuestras aplicaciones Node.js debido a la gran variedad de complementos y a su amplia comunidad de soporte.

Las similitudes de la producción de la misma funcionalidad en diferentes frameworks puede ayudar a proporcionar una idea a la hora de implementar una de nuestras demos en un framework diferente al del tutorial. Eso espero.

Express.js

Empezaremos por lo conocido. Express.js es un framework ligero y "no especializado" para producir aplicaciones Node.js basadas en Node.js.

Crear un servidor

Crea un directorio de proyecto con tu IDE o con este comando.

mkdir rest-express cd rest-express

Cree un archivo para su aplicación (normalmente app.js o index.js).

touch index.js

Inicializar el proyecto con NPM mediante la generación de archivos de paquetes NPM básicos sin tener que responder a ninguna pregunta con la bandera y bandera.

npm init -y

Instalar Express.js paquete.

npm install express

Modifica index.js y añade el siguiente código fuente para crear tu aplicación y la ruta example ruta.

// index.js

const express = require('express')

const app = express()
const port = process.env.PORT || 3000

app.get('/example', (req, res) => {
  res.json({ message: 'Looks good to me!' })
})

app.listen(port, () => {
  console.log(`listening on port ${port}`)
})

Ejecutar el servidor

Inicie la aplicación mediante la línea de comandos node línea de comandos. Puede que estés acostumbrado a npm start que en muchos casos sólo ejecuta este comando en el archivo de la aplicación.

node index.js

Ahora puedes hacer una petición usando Postman para ver la respuesta.

Screenshot of making a request to the Express.js example API using Postman

Bibliotecas estándar de Node.js

Node.js tiene paquetes integrados capaces de escuchar peticiones HTTP y construir respuestas. Los otros frameworks simplifican esto, además de añadir muchas otras características que de otro modo tendrías que construir.

Crear un servidor

Crea un directorio de proyecto con tu IDE o con este comando.

mkdir rest-node-only cd rest-node-only

Cree un archivo para su aplicación (normalmente app.js o index.js).

touch index.js

No necesitamos inicializar NPM hasta que necesitemos instalar paquetes. Para este ejemplo, usaremos paquetes incorporados en Node.js así que no necesitamos NPM ni ningún archivo de paquetes (🎉🎉🎉 Y NO node_modules DIRECTORIO 🎉🎉🎉).

Modifica index.js y añade el siguiente código fuente para crear tu aplicación y la ruta example ruta.

// index.js

const http = require('http')

const port = process.env.PORT || 3000

const requestHandler = (req, res) => {
  if (req.url === '/example'  && req.method === 'GET') {
    res.writeHead(200, { 'Content-Type': 'application/json' })
    res.end(JSON.stringify({ message: 'Node.js only: Looks good to me!' }))
  } else {
    res.writeHead(404, { 'Content-Type': 'application/json' })
    res.end(JSON.stringify({ message: 'Not found!' }))
  }
}

const server = http.createServer(requestHandler)

server.listen(port, () => {
  console.log(`listening on port ${port}`)
})

Ejecutar el servidor

Inicie la aplicación mediante la línea de comandos node línea de comandos.

node index.js

Ahora puedes hacer una petición usando Postman para ver la respuesta.

Screenshot of making a request to the Node.js example API using Postman

Koa.js

Koa.jsdiseñado por los mismos creadores de Express.jsha sido diseñado para ser más ligero y expresivo, lo que permite un código más fino y un mayor control de errores. Como tal, viene con menos características incorporadas y un amplio conjunto de extensiones de la comunidad.

Crear un servidor

Crea un directorio de proyecto con tu IDE o con este comando.

mkdir rest-koa cd rest-koa

Cree un archivo para su aplicación (normalmente app.js o index.js).

touch index.js

Inicializar el proyecto con NPM mediante la generación de archivos de paquetes NPM básicos sin tener que responder a ninguna pregunta con la bandera y bandera.

npm init -y

Instalar Koa.js y los paquetes de soporte para enrutar y enviar respuestas JSON. Nota: Koa no soporta enrutamiento (además de condiciones url), o respuestas JSON, sin paquete extra.

npm install koa @koa/router koa-json

Modifica index.js y añade el siguiente código fuente para crear tu aplicación y la ruta example ruta.

// index.js

const Koa = require('koa')
const Router = require('@koa/router')
const json = require('koa-json')

const app = new Koa()
const router = new Router()
const port = process.env.PORT || 3000

app
  .use(router.routes())
  .use(router.allowedMethods())
  .use(json({ pretty: false }))

router.get('/example', (ctx) => {
  ctx.body = { message: 'Koa.js: Looks good to me!' }
})

app.listen(3000)

Ejecutar el servidor

Inicie la aplicación mediante la línea de comandos node línea de comandos.

node index.js

Ahora puedes hacer una petición usando Postman para ver la respuesta.

Screenshot of making a request to the Koa.js example API using Postman

Restify

Restify es una aplicación Node.js optimizado para crear servicios web RESTful semánticamente correctos y listos para su uso en producción a gran escala.

Crear un servidor

Crea un directorio de proyecto con tu IDE o con este comando.

mkdir rest-restify cd rest-restify

Cree un archivo para su aplicación (normalmente app.js o index.js).

touch index.js

Inicializar el proyecto con NPM mediante la generación de archivos de paquetes NPM básicos sin tener que responder a ninguna pregunta con la bandera y bandera.

npm init -y

Instalar Restify Restify.

npm install restify

Modifica index.js y añade el siguiente código fuente para crear tu aplicación y la ruta example ruta.

// index.js

var restify = require('restify')

const port = process.env.PORT || 3000
var server = restify.createServer()

server.get('/example', (req, res, next) => {
  res.json({ message: 'Restify: Looks good to me!' })
  next()
})

server.listen(port, function() {
  console.log(`listening on port ${port}`)
})

Ejecutar el servidor

Inicie la aplicación mediante la línea de comandos node línea de comandos.

node index.js

Ahora puedes hacer una petición usando Postman para ver la respuesta.

Screenshot of making a request to the Restify example API using Postman

Hapi

hapi es un framework extremadamente escalable y capaz para Node.js. Desarrollado inicialmente para gestionar a escala el tráfico del Black Friday de Walmart, hapi sigue siendo la opción probada para las necesidades de backend de nivel empresarial.

Crear un servidor

Crea un directorio de proyecto con tu IDE o con este comando.

mkdir rest-hapi cd rest-hapi

Cree un archivo para su aplicación (normalmente app.js o index.js).

touch index.js

Inicializar el proyecto con NPM mediante la generación de archivos de paquetes NPM básicos sin tener que responder a ninguna pregunta con la bandera y bandera.

npm init -y

Instale el hapi paquete.

npm install @hapi/hapi

Modifica index.js y añade el siguiente código fuente para crear tu aplicación y la ruta example ruta.

// index.js

const Hapi = require('@hapi/hapi')

const port = process.env.PORT || 3000

const init = async () => {
  const server = Hapi.server({
    port: port,
    host: 'localhost'
  })

  server.route({
    method: 'GET',
    path: '/example',
    handler: (req, h) => {
      return { message: 'hapi: Looks good to me!' }
    }
  })

  await server.start()
  console.log('Server running on %s', server.info.uri)
}

init()

Ejecutar el servidor

Inicie la aplicación mediante la línea de comandos node línea de comandos.

node index.js

Ahora puedes hacer una petición usando Postman para ver la respuesta.

Screenshot of making a request to the hapi example API using Postman

Conclusión

Node.js puede usarse sin más, pero pagas el precio de tener que dar soporte a tus propias soluciones para características como el enrutamiento y los tipos de respuesta. Su aplicación será rápida, con poca sobrecarga de paquetes, si está familiarizado con la mejor manera de optimizar su código para el rendimiento. En puede encontrar soluciones de código abierto para el enrutamiento y otras características, sin necesidad de utilizar un marco como los de aquí, pero en ese punto, es posible que también utilice un marco.

Mientras que Express.js es poco intuitivo, tiene un montón de características incorporadas. No es el más rápido, pero eso no significa que sea lento. Es sin duda el más fácil para empezar.

Restify se ha creado específicamente para escalar aplicaciones RESTful y, a pesar de su simplicidad, se utiliza en algunas de las mayores aplicaciones de Node.js más grandes del mundo.

hapi está diseñado para escalar con rapidez y, al mismo tiempo, disponer de todas las funciones y estar preparado para la empresa.

Koa.js es una alternativa asíncrona a Express.jssin las características incorporadas.

Muchos desarrolladores elegirán el que tenga el mejor soporte o la mayor comunidad, lo que para mí es una clara elección entre hapi y Express.js.

Todo el Código

Puede encontrar un único repositorio con todo el código en GitHuben caso de que tengas problemas con los ejemplos de aquí.

Lecturas complementarias

Compartir:

https://a.storyblok.com/f/270183/250x250/451101b4f0/lukeoliff.png
Luke OliffAntiguos alumnos de Vonage

Amable educador tecnológico, padre de familia, defensor de la diversidad, probablemente discuta demasiado. Anteriormente ingeniero de backend. Háblame de JavaScript (frontend o backend), el increíble Vue.js, DevOps, DevSecOps, cualquier cosa JamStack. Escritor en DEV.to