Skip to content

davidsored/OnePieceAPI

Repository files navigation

🏴‍☠️ One Piece API

API REST construida con ASP.NET Core (.NET 10) que actúa como cliente/proxy de la API pública de One Piece. El proyecto es un ejercicio práctico para aprender a consumir APIs externas desde un backend en C# usando HttpClient, inyección de dependencias y deserialización de JSON.

🎓 Proyecto de práctica enfocado en la comunicación entre APIs: esta API recibe peticiones, consulta a la API de One Piece, mapea la respuesta a modelos propios (con nombres en español) y la devuelve al cliente.


🧭 ¿Qué hace?

El flujo de cada petición es:

Cliente  ─▶  OnePieceAPI (este proyecto)  ─▶  api-onepiece.com  ─▶  respuesta mapeada

Cada recurso sigue el mismo patrón:

  • Controller → expone los endpoints HTTP.
  • Interface (I...Service) → contrato del servicio.
  • Service → consume la API externa con HttpClient y deserializa el JSON.
  • Model → modelo propio en español, mapeado con [JsonPropertyName].

✨ Recursos disponibles

Recurso Ruta base Fuente externa (api-onepiece.com)
Personajes /api/Personaje /v2/characters/en
Espadas /api/Espada /v2/swords/en
Frutas /api/Fruta /v2/fruits/en
Tripulaciones /api/Tripulacion /v2/crews/en
Hakis /api/Haki /v2/hakis/en
Barcos /api/Barco /v2/boats/en

Cada recurso ofrece 3 endpoints con la misma estructura:

Método Endpoint Descripción
GET /api/{Recurso} Obtiene todos los elementos.
GET /api/{Recurso}/{id} Obtiene un elemento por su identificador.
GET /api/{Recurso}/multiple/{id1,id2,...} Obtiene varios elementos (IDs separados por coma).

Ejemplos

GET /api/Personaje
GET /api/Personaje/1
GET /api/Personaje/multiple/1,2,3

GET /api/Fruta/multiple/5,8
GET /api/Tripulacion
GET /api/Haki/1
GET /api/Barco
GET /api/Barco/1

🛠️ Tecnologías

  • .NET 10 / ASP.NET Core Web API
  • HttpClient con IHttpClientFactory (AddHttpClient<TInterface, TImpl>)
  • Inyección de dependencias
  • Deserialización con System.Text.Json (ReadFromJsonAsync)
  • OpenAPI habilitado en entorno de desarrollo

📂 Estructura del proyecto

OnePieceAPI/
├── Controllers/        # Endpoints HTTP (Personaje, Espada, Fruta, Tripulacion, Haki, Barco)
├── Services/           # Interfaces + servicios que consumen la API externa
├── Models/             # Modelos de datos mapeados desde el JSON externo
├── Program.cs          # Configuración, DI y registro de los HttpClient
├── OnePieceAPI.http    # Peticiones de ejemplo para probar la API
└── OnePieceAPI.csproj

🚀 Cómo ejecutarlo

Requisitos

Pasos

# 1. Clonar el repositorio
git clone https://github.com/<tu-usuario>/OnePieceAPI.git
cd OnePieceAPI

# 2. Restaurar dependencias
dotnet restore

# 3. Ejecutar
dotnet run

Por defecto la API queda disponible en:

  • HTTP → http://localhost:5278
  • HTTPS → https://localhost:7102

🧪 Probar la API

Puedes usar el archivo OnePieceAPI.http (compatible con Visual Studio y la extensión REST Client de VS Code), curl, Postman, o la documentación OpenAPI disponible en desarrollo:

GET http://localhost:5278/openapi/v1.json

Ejemplo con curl:

curl http://localhost:5278/api/Personaje/1

📝 Notas

  • Si un recurso no se encuentra, la API responde con 404 Not Found.
  • En los endpoints multiple, los identificadores no encontrados se omiten; solo se devuelve 404 si ninguno de los IDs existe.
  • Este proyecto depende de la disponibilidad de la API externa api-onepiece.com.

📚 Créditos

Datos proporcionados por la API pública de One Piece: https://api-onepiece.com/

One Piece © Eiichiro Oda / Shueisha. Este proyecto es solo con fines educativos.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages