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.
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
HttpClienty deserializa el JSON. - Model → modelo propio en español, mapeado con
[JsonPropertyName].
| 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). |
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- .NET 10 / ASP.NET Core Web API
HttpClientconIHttpClientFactory(AddHttpClient<TInterface, TImpl>)- Inyección de dependencias
- Deserialización con
System.Text.Json(ReadFromJsonAsync) - OpenAPI habilitado en entorno de desarrollo
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
# 1. Clonar el repositorio
git clone https://github.com/<tu-usuario>/OnePieceAPI.git
cd OnePieceAPI
# 2. Restaurar dependencias
dotnet restore
# 3. Ejecutar
dotnet runPor defecto la API queda disponible en:
- HTTP →
http://localhost:5278 - HTTPS →
https://localhost:7102
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- 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 devuelve404si ninguno de los IDs existe. - Este proyecto depende de la disponibilidad de la API externa api-onepiece.com.
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.