Curso App restaurant con pedidos en Flutter
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).
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).
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. |
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 );
VARCHAR(255)
para permitir la longitud adecuada de las URLs o rutas.La relación sigue siendo la misma: un menú puede tener múltiples ítems, pero cada ítem pertenece a un solo menú.
<?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);
}
}
<?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();
});
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:
GET http://localhost:8000/api/menus
GET http://localhost:8000/api/items
2378 visitas
« Capítulo 2 – Configuración y Estructura del Proyecto
Capítulo 4 – Modelos: Menu, Item y Cart »
Descarga el código fuente del proyecto adquiriendo el curso completo
Comprar© Copyright Codea::App Cursos de Programación Online | LATAM | 2020 - 2024