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.