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

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

Daniel Lozano Campano
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

El día en el que comencé a desarrollar todas mis webs con Python

0
En diciembre de 2022 apareció un nuevo framework llamado Pynecone, en su versión 0.1.8 Alpha. Cero ruido. Ya en julio de 2023, con su cambio de nombre a Reflex, y el lanzamiento de su versión 0.2.0, descubrí por primera vez este framework. Y la comunidad comenzó a hablar de él.
Java 23, claves y datos necesarios de la última versión de java

Java 23: ¿dónde estamos y cómo hemos llegado hasta aquí?

0
Java 23 ya está disponible desde el 17 de septiembre de 2024. Como siempre que se lanza una nueva versión, es útil conocer las novedades que incluye nuestro lenguaje favorito.

Tests de integración con Spring Boot y Testcontainers

0
En el desarrollo de aplicaciones Spring Boot es fundamental asegurar que todo funcione correctamente. Los tests unitarios son esenciales para validar el comportamiento de componentes de manera aislada.