Giter VIP home page Giter VIP logo

libreria's Introduction

Tabla de Contenido

Requerimientos

  1. node v20.10.0
  2. npm v10.2.3
  3. PostgreSQL 14.12

Configuración de la Base de Datos para la API y Pruebas

Para ejecutar correctamente las pruebas y la API, es necesario crear dos bases de datos: una para el entorno de ejecución y otra para las pruebas. Las bases de datos necesarias son:

  1. Una base de datos llamada libreria que contiene las tablas users y libros.
  2. Otra base de datos llamada libreriatest que contiene las mismas tablas.

Crear las Bases de Datos

Para crear estas bases de datos, puedes ejecutar los siguientes comandos desde la consola de psql:

CREATE DATABASE libreria;
CREATE DATABASE libreriatest;

\c libreria

CREATE TABLE IF NOT EXISTS users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(255) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL
);

CREATE TABLE IF NOT EXISTS libros (
    id SERIAL PRIMARY KEY,
    titulo VARCHAR(255) NOT NULL,
    autor VARCHAR(255) NOT NULL,
    publicacion INT NOT NULL
);

\c libreriatest

CREATE TABLE IF NOT EXISTS users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(255) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL
);

CREATE TABLE IF NOT EXISTS libros (
    id SERIAL PRIMARY KEY,
    titulo VARCHAR(255) NOT NULL,
    autor VARCHAR(255) NOT NULL,
    publicacion INT NOT NULL
);

Configuración de Archivos .env

Además, es necesario configurar los archivos .env y .env.test para apuntar a las bases de datos libreria y libreriatest correspondientemente.

Archivo .env

El archivo .env debe contener la configuración para la base de datos del entorno de ejecución:

DB_HOST=localhost
DB_PORT=5432
DB_USER=tu_usuario
DB_PASSWORD=tu_contraseña
DB_NAME=libreria

Archivo .env.test

El archivo .env.test debe contener la configuración para la base de datos de pruebas:

DB_HOST=localhost
DB_PORT=5432
DB_USER=tu_usuario
DB_PASSWORD=tu_contraseña
DB_NAME=libreriatest

Ejecución del Proyecto

  1. npm install
  2. npm run start:dev
  3. npm run test:e2e

Documentación de la API

Esta documentación describe los endpoints de la API para la gestión de usuarios y libros en tu aplicación. Se detallan los formatos de solicitud y respuesta, así como cualquier información adicional necesaria para su uso.

Para ver la informacion generada con swagger puedes ejecutar el proyecto y luego ir a la documentacion usando la siguiente ruta:


Usuarios

Crear un Usuario

Endpoint: POST /users

Descripción: Crea un nuevo usuario en la base de datos.

Solicitud:

  • URL: http://localhost:3000/users
  • Método: POST
  • Encabezados:
    • Content-Type: application/json
  • Cuerpo:
    {
      "username": "testuser",
      "password": "password"
    }

Respuesta:

  • Código de estado: 201 Created
  • Cuerpo:
    {
      "id": 1,
      "username": "testuser"
    }

Obtener un Usuario por Nombre de Usuario

Endpoint: GET /users/:username

Descripción: Obtiene un usuario por su nombre de usuario.

Solicitud:

Respuesta:

  • Código de estado: 200 OK
  • Cuerpo:
    {
      "id": 1,
      "username": "testuser",
      "password": "$2b$10$..."
    }

Autenticación

Login de Usuario

Endpoint: POST /auth/login

Descripción: Autentica a un usuario y devuelve un token JWT.

Solicitud:

Respuesta:

  • Código de estado: 201 Created
  • Cuerpo:
    {
      "access_token": "jwt_token"
    }

Libros

Obtener Todos los Libros

Endpoint: GET /libros

Descripción: Obtiene una lista de todos los libros.

Solicitud:

Respuesta:

  • Código de estado: 200 OK
  • Cuerpo:
    [
      {
        "id": 1,
        "titulo": "Libro de Prueba 1",
        "autor": "Autor de Prueba 1",
        "publicacion": 2021
      },
      {
        "id": 2,
        "titulo": "Libro de Prueba 2",
        "autor": "Autor de Prueba 2",
        "publicacion": 2022
      }
    ]

Obtener un Libro por ID

Endpoint: GET /libros/:id

Descripción: Obtiene un libro por su ID.

Solicitud:

Respuesta:

  • Código de estado: 200 OK
  • Cuerpo:
    {
      "id": 1,
      "titulo": "Libro de Prueba 1",
      "autor": "Autor de Prueba 1",
      "publicacion": 2021
    }

Crear un Nuevo Libro

Endpoint: POST /libros

Descripción: Crea un nuevo libro.

Solicitud:

  • URL: http://localhost:3000/libros
  • Método: POST
  • Encabezados:
    • Content-Type: application/json
    • Authorization: Bearer {jwt_token}
  • Cuerpo:
    {
      "titulo": "Nuevo Libro",
      "autor": "Nuevo Autor",
      "publicacion": 2023
    }

Respuesta:

  • Código de estado: 201 Created
  • Cuerpo:
    {
      "id": 3,
      "titulo": "Nuevo Libro",
      "autor": "Nuevo Autor",
      "publicacion": 2023
    }

Actualizar un Libro por ID

Endpoint: PUT /libros/:id

Descripción: Actualiza un libro existente por su ID.

Solicitud:

  • URL: http://localhost:3000/libros/:id
  • Método: PUT
  • Encabezados:
    • Content-Type: application/json
    • Authorization: Bearer {jwt_token}
  • Cuerpo:
    {
      "titulo": "Libro Actualizado",
      "autor": "Autor Actualizado",
      "publicacion": 2024
    }

Respuesta:

  • Código de estado: 200 OK
  • Cuerpo:
    {
      "id": 1,
      "titulo": "Libro Actualizado",
      "autor": "Autor Actualizado",
      "publicacion": 2024
    }

Eliminar un Libro por ID

Endpoint: DELETE /libros/:id

Descripción: Elimina un libro por su ID.

Solicitud:

Respuesta:

  • Código de estado: 200 OK
  • Cuerpo:
    {}

Información Adicional

  • Autenticación: Todos los endpoints de libros requieren un token JWT para la autenticación. El token se obtiene al hacer login y debe ser enviado en el encabezado Authorization de cada solicitud.

libreria's People

Watchers

Sebastian Ardila avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.