➜ API REST en Laravel para Obtener JSON
API REST en Laravel para Obtener JSON | En esta lección, configuraremos una API REST en Laravel que nos permitirá obtener datos en formato JSON de las tablas Menu y Items. La relación entre estas tablas será de uno a varios, donde un menú puede tener múltiples elementos (items).
1. Introducción a la API REST
En esta lección, configuraremos una API REST en Laravel que nos permitirá obtener datos en formato JSON de las tablas Menu
y Items
. La relación entre estas tablas será de uno a varios, donde un menú puede tener múltiples elementos (items).
2. Estructura de las Tablas
Diseño de Tablas con Campo de Imagen
Tabla: menus
Campo | Tipo de Datos | Descripción |
---|---|---|
id | INT (PK) | Identificador único del menú (autoincremental). |
name | VARCHAR(255) | Nombre del menú. |
description | TEXT | Descripción del menú (opcional). |
Tabla: items
Campo | Tipo de Datos | Descripción |
---|---|---|
id | INT (PK) | Identificador único del ítem (autoincremental). |
menu_id | INT (FK) | Identificador del menú al que pertenece (clave foránea referenciando a menus.id). |
name | VARCHAR(255) | Nombre del ítem. |
description | TEXT | Descripción del ítem (opcional). |
price | DECIMAL(8, 2) | Precio del ítem. |
image | VARCHAR(255) | URL o ruta de la imagen del ítem. |
SQL para Crear las Tablas con Campo de Imagen
Aquí tienes el SQL necesario para crear ambas tablas, incluyendo el campo de imagen en la tabla items
:
sql
CREATE TABLE menus ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, description TEXT );
CREATE TABLE items ( id INT AUTO_INCREMENT PRIMARY KEY, menu_id INT, name VARCHAR(255) NOT NULL, description TEXT, price DECIMAL(8, 2) NOT NULL, image VARCHAR(255), -- Campo para almacenar la URL o ruta de la imagen FOREIGN KEY (menu_id) REFERENCES menus(id) ON DELETE CASCADE );
Descripción del Campo de Imagen
- image: Este campo almacenará la URL o la ruta de la imagen del ítem. Puedes usar un tipo de dato
VARCHAR(255)
para permitir la longitud adecuada de las URLs o rutas.
Relación entre Tablas
La relación sigue siendo la misma: un menú puede tener múltiples ítems, pero cada ítem pertenece a un solo menú.
4. Métodos
<?php
namespace App\Http\Controllers\Api;
use App\Models\Item;
use App\Models\Menu;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class RestaurantController extends Controller
{
public function getMenus(){
$data = Menu::orderBy("id")->get();
return response()->json($data, 200);
}
public function getItems(){
$data = Item::get(["id","name","description","price","image","menu_id"]);
return response()->json($data, 200);
}
}
5. Rutas
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\JsonController;
use App\Http\Controllers\Api\RestaurantController;
Route::get('menus', [RestaurantController::class,"getMenus"]);
Route::get('items', [RestaurantController::class,"getItems"]);
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
6. Probar la API
-
Iniciar el Servidor: Ejecuta el siguiente comando para iniciar el servidor de Laravel:
bash
php artisan serve
-
Probar las Rutas: Utiliza Postman o tu navegador para probar las siguientes rutas:
- Menús:
GET http://localhost:8000/api/menus
- Items:
GET http://localhost:8000/api/items
- Menús:
3118 visitas
Capítulo 4 – Modelos: Menu, Item y Cart »
Descarga el código del proyecto
Descarga el código fuente del proyecto adquiriendo el curso completo
Comprar