Artículo

Crea una API REST local en minutos con json-server y json-server-auth

Retrato de Daniel Lozano
Daniel Lozano Campano
7
4
4 minutos de lectura
4 de febrero de 2025

Índice

  1. Introducción
  2. ¿Qué son json-server y json-server-auth?
  3. Instalación y configuración
  4. Ejemplo práctico: Explorando la API con Postman
  5. Conclusión

1. Introducción

¿Alguna vez has tenido que detener tu desarrollo porque no tienes un backend funcional? Con json-server y json-server-auth, puedes crear un servidor local en minutos, completo con autenticación. Estas herramientas son ideales para simular APIs REST y probar aplicaciones sin necesidad de implementar un backend real. Este tutorial te mostrará cómo hacerlo paso a paso.

2. ¿Qué son json-server y json-server-auth?

json-server

json-server es una librería de Node.js que permite generar un servidor API REST completo utilizando solo un archivo JSON como base de datos. Es ideal para proyectos en los que necesitas probar endpoints o simular un backend sin implementar uno real.

json-server-auth

json-server-auth es una extensión para json-server que agrega funcionalidad de autenticación y autorización. Incluye soporte para inicio de sesión, registro de usuarios y permisos basados en roles, utilizando JSON Web Tokens (JWT) para manejar la autenticación. También utiliza bcrypt para cifrar las contraseñas de forma segura.

Nota: json-server-auth no debe usarse en producción debido a sus limitaciones de seguridad.

3. Instalación y configuración

Paso 1: Crear un proyecto y configurar json-server

  1. Crea un nuevo directorio para tu proyecto
   mkdir my-json-server
   cd my-json-server
  1. Inicializa un proyecto de Node.js
   npm init -y
  1. Instala las dependencias necesarias
npm install json-server@0.17.4 json-server-auth --save-dev

Es importante usar la versión 0.17.4 de json-server porque json-server-auth aún no es completamente compatible con las versiones más recientes.

Paso 2: Configurar el archivo db.json

Crea un archivo llamado db.json en la raíz del proyecto y define tu base de datos inicial. Por ejemplo:

{
  "posts": [
    { "id": 1, "title": "Hello World", "content": "This is my first post." }
  ],
  "users": []
}

Nota: El array de users está vacío porque los usuarios se registrarán dinámicamente mediante el endpoint /register, pero es necesario crearlo para que la libería funcione correctamente.

Paso 3: Configurar el script para ejecutar el servidor

Abre el archivo package.json y agrega el siguiente script:

"scripts": {
  "start:server": "json-server-auth --watch db.json --port 4000"
}

Con esto, puedes iniciar el servidor con:

npm run start:server

Esto levantará el servidor en http://localhost:4000.

4. Ejemplo práctico: Explorando la API con Postman

1. Crear un usuario

Para registrar un usuario, realiza una solicitud POST al endpoint /register:

  • URL: http://localhost:4000/register
  • Método: POST
  • Cuerpo:
 {
    "email": "user@email.es",
    "password": "user",
    "name": "John",
    "lastname": "Doe",
    "fullname": "John Doe"
  }
  • Respuesta esperada:
{
    "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZW1haWwuZXMiLCJpYXQiOjE3Mzc0NTkxMDMsImV4cCI6MTczNzQ2MjcwMywic3ViIjoiMSJ9.A0TVIqe3MvxYrT1dyBxB0kpQkSVQzpZFXt9wMzY35s8",
    "user": {
        "email": "user@email.es",
        "name": "John",
        "lastname": "Doe",
        "fullname": "John Doe",
        "id": 1
    }
  }

Nota: Los únicos campos obligatorios son email y password. Puedes agregar otros campos según tus necesidades.

2. Iniciar sesión

Para iniciar sesión, realiza una solicitud POST al endpoint /login:

  • URL: http://localhost:4000/login
  • Método: POST
  • Cuerpo:
{
    "email": "user@email.es",
    "password": "user"
  }
  • Respuesta esperada:
  {
    "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZW1haWwuZXMiLCJpYXQiOjE3Mzc0NTkzODMsImV4cCI6MTczNzQ2Mjk4Mywic3ViIjoiMSJ9.X1e02ngyR9NNOooXohcl-jQOHH5brhRGPUnG4lo2xog",
    "user": {
        "email": "user@email.es",
        "name": "John",
        "lastname": "Doe",
        "fullname": "John Doe",
        "id": 1
    }
  }

3. Crear un post

Para crear un post, simplemente realiza una solicitud POST al endpoint /posts.

  • URL: http://localhost:4000/posts
  • Método: POST
  • Cuerpo:
{
    "title": "New Post",
    "content": "This is a post created by an authenticated user."
  }
  • Respuesta esperada:
  {
    "title": "New Post",
    "content": "This is a post created by an authenticated user.",
    "id": 2
  }

4. Obtener todos los posts

Haz una solicitud GET al endpoint /posts para obtener todos los posts:

  • URL: http://localhost:4000/posts
  • Método: GET
  • Respuesta esperada:
 [
    { "id": 1, "title": "Hello World", "content": "This is my first post." },
    { "id": 2, "title": "New Post", "content": "This is a post created by an authenticated user." }
  ]

5. Conclusión

json-server y json-server-auth te permiten crear una API REST completa con soporte para autenticación en minutos. Usando npm run start:server, puedes levantar tu servidor localmente y probar tus endpoints fácilmente con herramientas como Postman. Además, puedes expandir tu archivo db.json para simular más recursos y funcionalidades según las necesidades de tu proyecto.

Recordad que tambien podeis añadir esta funcionalidad dentro de vuestro proyecto de React, Vue, etc.

Retrato de Daniel Lozano
Daniel Lozano Campano
Soy un ingeniero de software con más de 3 años de experiencia en el desarrollo de aplicaciones web. Me apasiona crear soluciones digitales eficientes, escalables y que brinden una experiencia de usuario excepcional. Siempre estoy en constante aprendizaje para estar al día con las últimas tecnologías y tendencias del desarrollo. ¡Estoy aquí para compartir conocimientos, colaborar y aprender juntos!

Otros artículos que te pueden interesar

Series temporales: la bola de cristal científica
Recuerdo perfectamente el primer día que me explicaron qué eran las series temporales. La Almudena que estaba sentada en aquel máster de estadística de la Universidad de Santiago…
DBT para la transformación de datos de forma eficiente y escalable
En el mundo de los datos, la información y cómo la transformamos es fundamental para extraer valor y poder tomar decisiones estratégicas….
Inteligencia corporativa: Más allá de Power BI
Si eres analista de datos seguramente habrás escuchado el término “Business Intelligence” o “inteligencia corporativa”, incluso habrás usado algún software especializado como Power BI, Tableau, Qlik……
Compartir en LinkedIn
Compartir en X

Copiar el link