Inicio » Cursos » App restaurant con pedidos en Flutter

Curso App restaurant con pedidos en Flutter

Capitulo 3 ➜ 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

  1. Iniciar el Servidor: Ejecuta el siguiente comando para iniciar el servidor de Laravel:

    bash
    
    php artisan serve 
  2. 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

2378 visitas

Descarga el código del proyecto

Descarga el código fuente del proyecto adquiriendo el curso completo

Comprar

Más cursos que pueden interesarte

Más cursos

Codea Applications

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú

© Copyright Codea::App Cursos de Programación Online | LATAM | 2020 - 2024