Cómo crear un servicio personalizado para consumir APIs externas en Laravel

Inicio   /   Cómo crear un servicio personalizado para consumir APIs externas en Laravel

Blog Cómo crear un servicio personalizado para consumir APIs externas en Laravel


Cómo crear un servicio personalizado para consumir APIs externas en Laravel


En muchas aplicaciones web, especialmente en Laravel, es común que necesitemos conectarnos a servicios de terceros, como pasarelas de pago, plataformas de mensajería o servicios de envío. Para mantener nuestro código limpio y escalable, lo mejor es encapsular esa lógica en servicios personalizados.


1. ¿Por qué usar servicios en Laravel?

  • Separas la lógica externa del resto de tu app
  • Facilita pruebas y mantenimiento
  • Evitas duplicar código en controladores


2. Ejemplo práctico: consumir una API externa

Supongamos que queremos conectarnos a una API externa para obtener información de productos. Usaremos el cliente HTTP de Laravel (Http::), que está basado en Guzzle.


🛠 Paso 1: Crear el servicio

Usa Artisan para crearlo:

php artisan make:service ProductApiService

Luego edita el archivo generado (si no existe, créalo en app/Services):

// app/Services/ProductApiService.php
namespace App\Services;

use Illuminate\Support\Facades\Http;

class ProductApiService
{
    protected $baseUrl;

    public function __construct()
    {
        $this->baseUrl = config('services.product_api.url');
    }

    public function getAllProducts()
    {
        $response = Http::get($this->baseUrl . '/products');
        return $response->json();
    }

    public function getProductById($id)
    {
        $response = Http::get($this->baseUrl . "/products/{$id}");
        return $response->json();
    }
}

🔐 Paso 2: Configurar el archivo .env

# .env
PRODUCT_API_URL=https://fakestoreapi.com

⚙ Paso 3: Agregar a config/services.php

'product_api' => [
    'url' => env('PRODUCT_API_URL'),
],

🚀 Paso 4: Usarlo en un controlador

// app/Http/Controllers/ProductController.php
use App\Services\ProductApiService;

class ProductController extends Controller
{
    public function index(ProductApiService $service)
    {
        $products = $service->getAllProducts();
        return view('products.index', compact('products'));
    }
}

3. Bonus: manejo de errores


Para evitar fallos inesperados, maneja excepciones y errores:

public function getAllProducts()
{
    try {
        $response = Http::timeout(5)->get($this->baseUrl . '/products');
        return $response->successful() ? $response->json() : [];
    } catch (\Exception $e) {
        \Log::error('API Error: ' . $e->getMessage());
        return [];
    }
}

4. Conclusión


Centralizar la lógica de integración en servicios es una de las mejores prácticas en Laravel. Te permite mantener el código organizado, testeable y flexible para futuros cambios o mejoras.


¿Ya usas servicios en tu aplicación? ¡Déjame saber en los comentarios cómo lo implementaste!


Tags: Laravel, api, services, rest

Ultimas Noticias


Crea publicaciones de exito en instagram

Descubre las prácticas recomendadas par


Cómo vender ropa usada de forma sostenible

Ya sea que tenga un guardarropa desborda


Ventajas y Desventajas del Trabajo Remoto para Desarrolladores

El trabajo remoto describe un entorno pr


Cómo agregar nuevas columnas a la tabla existente en la migración de Laravel

A veces se requiere agregar nuevas colum


Cómo integrar MercadoPago en Laravel

Cómo integrar MercadoPago en Laravel


🔐 Seguridad Avanzada en Laravel: Protege tu Plataforma como un Profesional

Laravel ofrece herramienta