Ejecutando comandos desde la API

Clase 11 de 33Curso Avanzado de Laravel

Resumen

Potencia tu flujo en Laravel con una ruta limpia que ejecuta un comando de verificación de email y confirma el envío desde Mailtrap o servidores SMTP. Aquí verás cómo conectar un controlador, el método send, Artisan::call, una ruta POST en api.php y una respuesta JSON para cerrar el ciclo con pruebas claras.

¿Cómo llamar comandos Artisan desde un controlador?

Para ejecutar lógica existente como un comando desde tu aplicación, crea o abre un Newsletter Controller y define un método Send que use Artisan. La idea: centralizar el disparo del command y devolver un JSON confirmando que “todo okay”.

¿Qué controlador y método se crean?

  • Crear o reutilizar Newsletter Controller.
  • Declarar el método público Send.
  • Importar el package de Artisan.
  • Preparar datos de respuesta en JSON.
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Artisan;
// use App\Console\Commands\SendEmailVerificationCommand; // Importa tu comando si aplica.

class NewsletterController extends Controller
{
    public function send()
    {
        // Ejecuta el comando de verificación de email.
        // Opción 1 (por clase):
        // Artisan::call(SendEmailVerificationCommand::class);

        // Opción 2 (por nombre de comando):
        // Artisan::call('send:email-verification');

        $data = ['todo' => 'okay'];
        return response()->json($data);
    }
}

¿Cómo usar Artisan call con --class?

  • Usa el método Artisan::call para invocar un comando.
  • Pasa el nombre del comando o su clase con el modificador “--class”.
  • Mantén el método Send enfocado a orquestar y responder en JSON.

¿Cómo exponer el endpoint en api.php?

Debes apuntar una ruta POST a “newsletter” que invoque el Newsletter Controller y su método Send. Así podrás lanzar el proceso desde tu API y verificar resultados.

¿Qué ruta HTTP se configura?

  • Tipo de ruta: POST.
  • URI: /api/newsletter.
  • Acción: NewsletterController@send.
<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\NewsletterController;

Route::post('newsletter', [NewsletterController::class, 'send']);

¿Cómo preparar datos y probar el envío de verificación?

El comando busca en la base de datos usuarios creados hace siete días y sin verificar su correo. Por eso, antes de probar la ruta, prepara un registro que cumpla esas condiciones y luego dispara la petición desde un cliente HTTP.

¿Qué datos en la base de datos se ajustan?

  • Establecer email_verified_at en nulo.
  • Fijar la fecha de creación con siete días de antigüedad.
  • Guardar cambios en la base de datos.

¿Cómo validar con un cliente HTTP y Mailtrap o SMTP?

  • Enviar una petición POST a /api/newsletter desde tu cliente HTTP.
  • Confirmar que la respuesta sea 200: “todo okay”.
  • Revisar Mailtrap o tus servidores SMTP para ver la verificación de email recibida.
  • Confirmar que el endpoint de newsletter está funcionando.

¿Te animas a extender la API? Crea dos endpoints para calificar usuarios y productos. Comparte dudas o avances en los comentarios.

      Ejecutando comandos desde la API