Hoy en día casi todas las aplicaciones necesitan comunicarse con otras aplicaciones. Por ejemplo:
una app móvil que consume datos
un frontend en JavaScript
o incluso servicios externos
La forma más común de hacer esto es mediante APIs REST.
Si trabajas con Laravel, crear una API es bastante sencillo gracias a todas las herramientas que incluye el framework.
En este tutorial vamos a crear una API REST completa paso a paso, con operaciones CRUD (crear, leer, actualizar y eliminar datos).
Al final tendrás una API funcional que podrás probar fácilmente con Postman.
1. Crear un nuevo proyecto Laravel
Primero necesitamos crear un proyecto nuevo.
Si tienes instalado Composer, puedes hacerlo con este comando:
<pre> <code> composer create-project laravel/laravel laravel-api </code> </pre>
Después entra en la carpeta del proyecto:
<pre> <code> cd laravel-api </code> </pre>
Ahora inicia el servidor de desarrollo de Laravel:
<pre> <code> php artisan serve </code> </pre>
Si todo ha ido bien, podrás abrir tu navegador y visitar:
http://localhost:8000
2. Configurar la base de datos
Ahora vamos a configurar la conexión a la base de datos.
Abre el archivo .env y busca estas variables:
<pre> <code> DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel_api DB_USERNAME=root DB_PASSWORD= </code> </pre>
Asegúrate de colocar los datos correctos según tu entorno.
Después ejecuta las migraciones para crear las tablas iniciales de Laravel.
<pre> <code> php artisan migrate </code> </pre>
3. Crear el modelo y la migración
Para este ejemplo vamos a crear una API que gestione productos.
Laravel permite crear el modelo y la migración con un solo comando:
<pre> <code> php artisan make:model Product -m </code> </pre>
Este comando crea:
el modelo Product
una migración para la tabla products
Ahora abre el archivo de migración que está en:
database/migrations
Y define las columnas de la tabla:
<pre> <code>
public function up() {
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->text('description')->nullable();
$table->decimal('price', 10, 2);
$table->timestamps();
});
} </code> </pre>
Después ejecuta nuevamente las migraciones:
<pre> <code> php artisan migrate </code> </pre>
Con esto ya tendrás la tabla products en tu base de datos.
4. Crear el controlador de la API
Ahora vamos a crear el controlador que manejará nuestra API.
Ejecuta este comando:
<pre> <code> php artisan make:controller Api/ProductController --api </code> </pre>
Este controlador se encargará de las operaciones principales:
listar productos
crear productos
actualizar productos
eliminar productos
5. Crear las rutas de la API
Las rutas de las APIs en Laravel se definen en el archivo:
routes/api.php
Añade la siguiente línea:
<pre> <code>
use App\Http\Controllers\Api\ProductController;
Route::apiResource('products', ProductController::class);
</code> </pre>
Con esta sola línea Laravel crea automáticamente todas las rutas necesarias.
Método Endpoint
GET /api/products
POST /api/products
GET /api/products/{id}
PUT /api/products/{id}
DELETE /api/products/{id}
6. Implementar los métodos del controlador
Ahora vamos a implementar la lógica del controlador.
Primero importa las clases necesarias.
<pre> <code>
use App\Models\Product;
use Illuminate\Http\Request;
</code> </pre>
Obtener todos los productos
<pre> <code>
public function index() {
$products = Product::all();
return response()->json([ 'success' => true, 'data' => $products ]);
}
</code> </pre>
Este método devuelve todos los productos en formato JSON.
Crear un producto
<pre> <code>
public function store(Request $request) {
$product = Product::create($request->all());
return response()->json([ 'success' => true, 'data' => $product ]);
} </code> </pre>
Mostrar un producto
<pre> <code>
public function show($id) {
$product = Product::findOrFail($id);
return response()->json($product);
} </code> </pre>
Actualizar un producto
<pre> <code>
public function update(Request $request, $id) {
$product = Product::findOrFail($id);
$product->update($request->all());
return response()->json([ 'success' => true, 'data' => $product ]);
} </code> </pre>
Eliminar un producto
<pre> <code>
public function destroy($id) {
Product::destroy($id);
return response()->json([ 'success' => true ]);
} </code> </pre>
7. Probar la API con Postman
Ahora que la API está lista, podemos probarla usando Postman.
Obtener productos
GET /api/products
Crear producto
POST /api/products
Body JSON:
<pre> <code> { "name": "Laptop", "description": "Powerful laptop", "price": 1200 } </code> </pre>
Actualizar producto
PUT /api/products/1
Eliminar producto
DELETE /api/products/1
8. Algunas buenas prácticas al crear APIs
Cuando desarrolles APIs con Laravel, es recomendable seguir algunas buenas prácticas:
validar siempre los datos recibidos
devolver respuestas JSON consistentes
usar códigos HTTP correctos
implementar autenticación
usar paginación cuando haya muchos resultados
Esto hará que tu API sea más robusta y fácil de mantener.
Conclusión
Como has visto, crear una API REST con Laravel es bastante sencillo.
En pocos pasos hemos creado una API capaz de:
listar productos
crear nuevos productos
actualizar datos
eliminar registros
Además, gracias a herramientas como Postman, probar la API es muy rápido.
A partir de aquí puedes mejorar tu proyecto agregando autenticación, validaciones más avanzadas o incluso documentación para tu API.