Hijitus-API



Objetivo de la API



La idea es que cualquiera pueda contrubuir a este proyecto con lo que considere que podria mejorar la API.
Dada la gran popularidad entre los desarrolladores front-end de las APIs de "Rick and Morty", "PokeAPI", "Dragon Ball API", etc., pensé que sería divertido tener una versión argentina. Por eso, elegí al primer superhéroe animado argentino para desarrollarla.

Lenguaje



Esta API está construida en JavaScript utilizando el entorno de Node.js con su sistema de módulos y el framework Express.js, siguiendo la arquitectura MVC.

- El testing de este backend se realiza utilizando el framework Jest y la libreria supertest

Base de datos



Actualmente, no existe la necesidad de crear una base de datos, y un archivo JSON es suficiente para administrarla. En próximas versiones, es muy probable que se porte a MongoDB.

Librerías



- cors: Para el manejo de los CORS.
- nodemon: dependencia de desarrollo para manejar el reinicio de la api al modificar codigo.

Instalacion



1. Clona este repositorio:
``` Bash
git clone https://github.com/Bartoloni00/hijitus-api.git
```
2. Navega al directorio del proyecto:
``` Bash
cd hijitus-api
```
3. Instala las dependencias:
``` Bash
npm install
```

4. Inicia el proyecto:
``` Bash
npm run dev
```

Uso de la API



Ruta raiz de la api


llamando a la ruta raiz de la api encontraremos este mismo readme el cual incluye toda la documentacion

```bash
http://localhost:3333
```

Obtener todos los personajes de la serie de Hijitus.



Realiza una peticion por GET a la siguiente URL:

```bash
http://localhost:3333/characters
```

Paginacion


Los personajes vienen dividos por paginas actualmente, por defecto vienen 10 personajes en 3 paginas diferentes, de la siguiente manera podras modificar la pagina:
```bash
http://localhost:3333/characters?page=2
```

Y esta es la forma en la que podras modificar la cantidad de personajes que habra por pagina (default = 10)
```bash
http://localhost:3333/characters?items=2
```

Filtros


> [!TIP]
> Los filtros pueden ser concatenados en un mismo query string.

#### Filtrar por categoria:
``` bash
http://localhost:3333/characters?category=secundario
```
``` bash
http://localhost:3333/characters?category=protagonista
```
``` bash
http://localhost:3333/characters?category=antagonista
```
``` bash
http://localhost:3333/characters?category=episodico
```

#### Filtrar por especie:

``` bash
http://localhost:3333/characters?species=robot
```
``` bash
http://localhost:3333/characters?species=humano
```
``` bash
http://localhost:3333/characters?species=perro
```
``` bash
http://localhost:3333/characters?species=humano
```
``` bash
http://localhost:3333/characters?species=mounstruo
```
``` bash
http://localhost:3333/characters?species=canguro
```
``` bash
http://localhost:3333/characters?species=pajaro
```
``` bash
http://localhost:3333/characters?species=dragon
```
``` bash
http://localhost:3333/characters?species=Pingüino
```
``` bash
http://localhost:3333/characters?species=Búho
```

#### Filtrar por personalidad:

``` bash
http://localhost:3333/characters?personality=neutral
```
``` bash
http://localhost:3333/characters?personality=bueno
```
``` bash
http://localhost:3333/characters?personality=malo
```

#### Filtrar por genero:

``` bash
http://localhost:3333/characters?gender=femenino
```
``` bash
http://localhost:3333/characters?gender=masculino
```
``` bash
http://localhost:3333/characters?gender=N/A
```

#### Filtrar por descripcion:
Buscar por cualquier frase o palabra que pueda estar incluida en la descripcion.
``` bash
http://localhost:3333/characters?description=amigo%20de%20hijitus
```

obtener un personaje en concreto de la serie.



Realiza una peticion por GET a la siguiente URL:

```bash
http://localhost:3333/characters/{numeroId}
```

> [!NOTE]
> Los id de los personajes actualmente van del 1 al 28.

Filtros



obtener un personaje aleatorio de la serie.



Realiza una peticion por GET a la siguiente URL:

```bash
http://localhost:3333/characters/random
```

Contribuciones



Si deseas contribuir a este proyecto, por favor, abre un issue o realiza un pull request. ¡Toda ayuda es bienvenida!

Licencia


Este proyecto está bajo la Licencia MIT.