➜ 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: 
3295 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