Índice
- Introducción
- ¿Qué son json-server y json-server-auth?
- Instalación y configuración
- Ejemplo práctico: Explorando la API con Postman
- 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
- Crea un nuevo directorio para tu proyecto
mkdir my-json-server
cd my-json-server
- Inicializa un proyecto de Node.js
npm init -y
- 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.