Laravel Hack: cree un comando Artisan personalizado para generar API CRUD en muy poco tiempo
En este artículo, le mostraré cómo crear un comando Artisan personalizado que genere automáticamente una API CRUD para una tabla de base de datos determinada. El comando tomará el nombre de la tabla como argumento y creará un conjunto de controladores, solicitudes y modelos para la API.
Crear una API CRUD
- Create / Crear
- Read / Leer
- Update / Actualizar
- Delete / Eliminar
Para una tabla de base de datos puede ser una tarea que requiere mucho tiempo para los desarrolladores. Sin embargo, este proceso se puede simplificar al automatizar la generación de la API a través de un comando personalizado de Artisan.
- Artisan es la interfaz de línea de comandos incluida con Laravel, un popular marco PHP para el desarrollo de aplicaciones web. Proporciona una serie de comandos útiles para tareas comunes, como:
- la generación de controladores,
- migraciones
- y modelos.
También se pueden crear comandos personalizados para automatizar tareas repetitivas o complejas.
- Primero, crearemos un nuevo comando usando el comando
make:command
proporcionado por Artisan.- Este comando creará un nuevo archivo en el directorio
app/Console/Commands
, donde podemos definir el comportamiento de nuestro comando personalizado.
- Este comando creará un nuevo archivo en el directorio
php artisan make:command CreateCrudApi --command=make:crud-api
- En la clase
CreateCrudApi
generada, definiremos el métodohandle
, que contendrá la lógica para generar la API.- También necesitaremos aceptar un nombre de tabla como argumento, lo que se puede hacer agregándolo a la propiedad de
signature
y al método dehandle
,$this->argument('table')
- También necesitaremos aceptar un nombre de tabla como argumento, lo que se puede hacer agregándolo a la propiedad de
use Illuminate\Console\Command;
use Illuminate\Support\Str;
class CreateCrudApi extends Command
{
protected $signature = 'create:crud-api {table}';
public function handle()
{
$table = $this->argument('table');
$model = Str::studly($table);
// Code for generating the API goes here
}
}
Usaremos el comando php artisan make:model
para crear un nuevo modelo para la tabla, pasando el nombre de la tabla como argumento.
$this->call('make:model', [
'name' => $model,
'--migration' => true,
]);
Podemos usar el comando php artisan make:controller
para crear un nuevo controlador para la API, pasando el nombre de la tabla como argumento.
$this->call('make:controller', [
'name' => $model.'Controller',
'--model' => $model,
'--api' => true,
'--requests' => true,
]);
Finalmente, agregaremos las rutas para crear, leer, actualizar y eliminar recursos usando el archivo de ruta api.php
, y se verá así.
use App\Http\Controllers\FooController;
//... other routes
Route::apiResource('foo', FooController::class);
Asegúrese de reemplazar el nombre de la API y el nombre del controlador.
En conclusión…
- Automatizar la generación de una API CRUD mediante un comando Artisan personalizado puede ahorrarles a los desarrolladores una cantidad significativa de tiempo y esfuerzo.
- Al utilizar la interfaz de línea de comandos proporcionada por Laravel y combinarla con el poder de Eloquent ORM, los desarrolladores pueden crear rápida y fácilmente una API totalmente funcional para una tabla de base de datos.
- Esto puede ser especialmente útil para proyectos que requieren la creación de varias API.
- Puede ahorrar mucho tiempo y esfuerzo a largo plazo.
- Aaunque este artículo usa Laravel como ejemplo, se pueden aplicar técnicas similares a otros marcos y lenguajes de programación.
- La técnica discutida en este artículo puede ser útil para la mayoría de las tareas relacionadas con CRUD, aunque…
- no siempre es el mejor enfoque
- siempre evalúa cuál es la mejor opción para el caso de uso específico y los requisitos comerciales.
Como desarrolladores, siempre buscamos formas de optimizar nuestro flujo de trabajo y mejorar nuestra productividad.
Si ha tenido experiencia con la automatización de la generación de API CRUD o tiene alguna idea sobre el tema, nos encantaría saber de usted en los comentarios.
Gracias por llegar hasta aquí, si encuentras esto útil no olvides dejar un👍🏼y suscribirse para recibir más contenido.
Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre AWS y Laravel: