Esta es una API RESTful construida con Express y Prisma ORM que proporciona autenticación mediante JSON Web Tokens (JWT). La API permite la gestión de usuarios y notas, con rutas para registro, inicio de sesión y operaciones CRUD para notas.
- Características
- Tecnologías
- Instalación
- Configuración
- Uso
- Rutas
- Documentación
- Pruebas
- Contribución
- Licencia
- Registro de usuarios
- Inicio de sesión con JWT
- CRUD de notas
- Validaciones de entrada
- Seguridad mediante cifrado de contraseñas
- Express: Framework para construir la API.
- Prisma ORM: ORM para la gestión de base de datos.
- JWT: Para autenticación y autorización.
- bcryptjs: Para cifrado de contraseñas.
- swagger-jsdocs: Para generar la documentacion interactiva
- express-validator: Para validación de entradas
-
Clona el repositorio:
git clone https://github.com/tu_usuario/tu_repositorio.git cd tu_repositorio
-
Instala las dependencias:
npm install
-
Configura tu base de datos:
-
La propiedad
data source provider
está por defecto ensqlite
recuerda cambiarlo a tu base de datos de preferencia y enurl
pones la ulr de tu base de datos o puedes importarla desde el archivo.env
datasource db { provider = "sqlite" url = "file:./db.dev" }
Crea un archivo
.env
en la raíz del proyecto con la siguiente configuración:SECRET="tu_clave_secreta_para_jwt"
esta api esta configurada para despelgarse con turso, si no estas usando una base de datos desplegada en ese hosting, solo comenta las siguientes lineas en el archivo db.js
// const libsql = createClient({ // url: process.env.TURSO_DATABASE_URL, // authToken: process.env.TURSO_AUTH_TOKEN, // }); // const adapter = new PrismaLibSQL(libsql); const prisma = new PrismaClient() // no olvides quitar el parametro { adapter }
-
Ejecuta las migraciones de Prisma:
npx prisma migrate dev
-
Inicia el servidor:
npm start
-
La API estará disponible en
http://localhost:3000
.
- POST /api/auth/register
- Crea un nuevo usuario.
- Body:
{"username": "string", "password": "string"}
- POST /api/auth/login
- Inicia sesión y devuelve un token JWT.
- Body:
{"username": "string", "password": "string"}
- GET /api/notes
- Devuelve todas las notas del usuario autenticado.
- POST /api/notes
- Crea una nueva nota para el usuario autenticado.
- Body:
{"title": "string", "content": "string"}
- PUT /api/notes/:id
- Actualiza una nota específica del usuario autenticado.
- Body:
{"title": "string", "content": "string"}
- DELETE /api/notes/:id
- Elimina una nota específica del usuario autenticado.
La documentación interactiva de la API está disponible en http://localhost:3000/api/docs/
. Esta ruta proporciona una vista detallada de los endpoints de la API, los parámetros requeridos, y ejemplos de solicitudes y respuestas.
Las pruebas están implementadas usando Jest. Puedes ejecutar las pruebas con:
npm test
Las contribuciones son bienvenidas. Si deseas contribuir, por favor abre un "issue" o envía un "pull request" con tus cambios.
Este proyecto está bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.