Cómo subir un archivo CSV y enviar sus datos a una API REST externa usando Laravel 8.x


En este artículo, aprenderemos cómo subir un archivo CSV en Laravel 8.x y enviar sus datos a una API REST externa. Usaremos el poderoso framework Laravel para manejar la subida del archivo y la comunicación con la API. Requisitos previos Antes de comenzar, asegúrate de tener instalado lo siguiente:

  • Laravel 8.x 
  • Composer 

Paso 1: Configuración inicial Primero, crea un nuevo proyecto de Laravel ejecutando el siguiente comando en tu terminal:

composer create-project --prefer-dist laravel/laravel csv-upload-api

Luego, navega hasta el directorio del proyecto:
cd csv-upload-api

Paso 2: Configurar la base de datos A continuación, debes configurar la conexión de la base de datos en el archivo .env. Asegúrate de proporcionar los detalles correctos de tu base de datos, como el nombre de la base de datos, el usuario y la contraseña.

 Paso 3: Crear la migración y el modelo Laravel proporciona una manera conveniente de crear tablas de base de datos utilizando migraciones. Ejecuta el siguiente comando para generar una migración que creará la tabla necesaria para almacenar los datos del archivo CSV:
php artisan make:migration create_csv_data_table --create=csv_data

Luego, abre el archivo de migración recién creado en el directorio database/migrations y define las columnas necesarias para tu tabla. Por ejemplo, podrías tener columnas como name, email, phone, etc. Después de definir las columnas, ejecuta la migración para crear la tabla en la base de datos:
php artisan migrate

A continuación, crea un modelo llamado CsvData para interactuar con la tabla que acabas de crear:
php artisan make:model CsvData

Paso 4: Crear las rutas y controladores Ahora, necesitamos definir las rutas y los controladores necesarios para manejar la subida del archivo CSV y la comunicación con la API externa. Abre el archivo routes/web.php y agrega las siguientes rutas:

use App\Http\Controllers\CsvUploadController;

Route::get('/upload', [CsvUploadController::class, 'showUploadForm'])->name('upload.form');
Route::post('/upload', [CsvUploadController::class, 'upload'])->name('upload.submit');

Luego, crea un controlador llamado CsvUploadController ejecutando el siguiente comando:

php artisan make:controller CsvUploadController

Abre el archivo del controlador recién creado en el directorio app/Http/Controllers y define los métodos showUploadForm y upload:

<?php

namespace App\Http\Controllers;

use App\Models\CsvData;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;

class CsvUploadController extends Controller
{
    public function showUploadForm()
    {
        return view('upload');
    }

    public function upload(Request $request)
    {
        // Procesa el archivo CSV y envía los datos a la API externa
    }
}

Paso 5: Crear la vista de subida de archivos Ahora, necesitamos crear una vista para mostrar el formulario de subida de archivos. Crea un archivo llamado upload.blade.php en el directorio resources/views y agrega el siguiente código:


<!DOCTYPE html>
<html>
<head>
    <title>Subir archivo CSV</title>
</head>
<body>
    <form method="POST" action="{{ route('upload.submit') }}" enctype="multipart/form-data">
        @csrf
        <input type="file" name="csv_file">
        <button type="submit">Subir</button>
    </form>
</body>
</html>


Paso 6: Procesar el archivo CSV y enviar los datos a la API externa Finalmente, necesitamos completar el método upload en el controlador CsvUploadController para procesar el archivo CSV y enviar los datos a la API externa. Dentro del método upload, puedes utilizar la clase CsvData para guardar los datos del archivo CSV en la base de datos. Luego, puedes usar la clase Http de Laravel para enviar los datos a la API externa. Aquí hay un ejemplo básico de cómo podrías procesar el archivo CSV y enviar los datos a la API:


public function upload(Request $request)
{
    $file = $request->file('csv_file');

    // Procesar el archivo CSV y guardar los datos en la base de datos

    $csvData = new CsvData();
    $csvData->name = 'John Doe';
    $csvData->email = 'johndoe@example.com';
    $csvData->phone = '1234567890';
    $csvData->save();

    // Enviar los datos a la API externa utilizando la clase Http

    $response = Http::post('https://api.example.com/data', [
        'name' => $csvData->name,
        'email' => $csvData->email,
        'phone' => $csvData->phone,
    ]);

    // Procesar la respuesta de la API externa y mostrar una confirmación al usuario

    if ($response->successful()) {
        // La API respondió correctamente
        return back()->with('success', 'Los datos se enviaron correctamente a la API externa.');
    } else {
        // La API respondió con un error
        return back()->with('error', 'Hubo un error al enviar los datos a la API externa.');
    }
}


Conclusión En este artículo, hemos aprendido cómo subir un archivo CSV en Laravel 8.x y enviar sus datos a una API REST externa. Hemos cubierto los pasos necesarios para configurar la base de datos, crear migraciones y modelos, definir rutas y controladores, crear una vista de subida de archivos, y procesar el archivo CSV y enviar los datos a la API externa. ¡Ahora puedes aplicar este conocimiento en tus propios proyectos y ampliar tus habilidades de desarrollo con Laravel!



Publicar un comentario

Hola

Articulo Anterior Articulo Siguiente