➜ API REST en Laravel: Breve Explicación
API REST en Laravel para Carrito de Compras con Kotlin | Aprende a crear una API REST en Laravel para manejar productos y categorías en un carrito de compras, diseñada para integrarse con aplicaciones móviles desarrolladas en Kotlin. En este curso, exploraremos cómo construir endpoints eficientes para gestionar datos de productos y categorías.
En esta lección, mostraremos los endpoints para gestionar datos de productos y categorías, y cómo consumirlos desde una app Kotlin utilizando Retrofit.
Laravel será el framework backend para crear la API REST que gestionará la información del bazar. La API proporcionará endpoints para:
- Obtener las categorías del bazar.
- Obtener los productos de cada categoría.
- Gestionar el carrito de compras de manera local en la app, mientras que la API devolverá la información necesaria para poblar los datos.
Modelos:
Modelo Product
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasFactory;
protected $fillable =[
'name',
'description',
'price',
'stock',
'unit',
'image'
];
public function category(): BelongsTo
{
return $this->belongsTo(Category::class);
}
}
Modelo Category
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
use HasFactory;
protected $fillable =[
'name',
'image'
];
public function products(): HasMany
{
return $this->hasMany(Product::class);
}
}
Rutas API
Abrir el archivo routes/api.php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\JsonController;
Route::get('products', [JsonController::class,"products"]);
Route::get('categories', [JsonController::class,"categories"]);
Este fragmento de código de Laravel define las rutas para una API que proporciona datos sobre productos y categorías, los cuales son manejados por el controlador JsonController
. Estas rutas permiten que una aplicación cliente, como una app en Kotlin para un carrito de compras, haga solicitudes HTTP para obtener estos datos.
Detalle de las rutas:
-
Ruta para productos (
php/products
):Route::get('products', [JsonController::class,"products"]);
-
Esta ruta responde a solicitudes GET en la URL
/products
. - Al recibir una solicitud, Laravel invoca el método
products()
delJsonController
. - El método
products()
retorna una lista de productos en formato JSON, lo cual permite que la app cliente obtenga los productos desde la base de datos.
-
-
Ruta para categorías (
php/categories
):Route::get('categories', [JsonController::class,"categories"]);
-
Esta ruta responde a solicitudes GET en la URL
/categories
. - Al recibir una solicitud, Laravel ejecuta el método
categories()
delJsonController
. - El método
categories()
devuelve todas las categorías en formato JSON, permitiendo que la app cliente las use para clasificar o filtrar los productos.
-
Implementación en la app Kotlin:
- La aplicación en Kotlin utilizaría estas rutas para realizar solicitudes GET al servidor. Por ejemplo, usando librerías como Retrofit para hacer las peticiones y manejar las respuestas JSON.
- La URL de cada endpoint (
/products
y/categories
) sería llamada para obtener los datos, que luego pueden ser mostrados en la app en listas o grillas, permitiendo al usuario ver los productos y categorías del carrito de compras.
Controlador
namespace App\Http\Controllers\Api;
use App\Models\Category;
use App\Models\Product;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class JsonController extends Controller
{
public function categories(){
$categories = Category::all();
return response()->json($categories, 200);
}
public function products(){
$products = Product::get(["id","name","description","price","stock","unit","image","category_id"]);
return response()->json($products, 200);
}
}
Este código de Laravel pertenece a un controlador API (JsonController
) que se utiliza para proporcionar datos en formato JSON, que pueden ser consumidos por una aplicación de carrito de compras en Kotlin. El controlador gestiona las solicitudes relacionadas con categorías y productos, probablemente para mostrarlos en la app.
Detalle de las funciones:
-
categories()
:- Recupera todas las categorías desde la base de datos usando el modelo
Category
. - Devuelve la lista de categorías en formato JSON con un código de estado HTTP 200 (éxito).
php
public function categories(){ $categories = Category::all(); return response()->json($categories, 200); }
- El método
Category::all()
recupera todas las filas de la tablacategories
en la base de datos. - El resultado es enviado a la app cliente en formato JSON con el código de respuesta 200.
- Recupera todas las categorías desde la base de datos usando el modelo
-
products()
:- Recupera una lista de productos desde la base de datos, con un conjunto específico de campos:
id
,name
,description
,price
,stock
,unit
,image
ycategory_id
. - Devuelve los productos en formato JSON con un código de estado HTTP 200.
php
public function products(){ $products = Product::get(["id","name","description","price","stock","unit","image","category_id"]); return response()->json($products, 200); }
- El método
Product::get()
filtra los campos específicos que se necesitan del modeloProduct
. - El formato JSON permite que los productos sean fáciles de consumir por la aplicación en Kotlin.
- Recupera una lista de productos desde la base de datos, con un conjunto específico de campos:
Uso en Kotlin:
La app en Kotlin puede realizar solicitudes HTTP a estos endpoints para obtener los datos de categorías y productos. Los datos JSON se pueden parsear en modelos o clases de datos (como Category
y Product
) en la app, facilitando la creación de la interfaz de usuario del carrito de compras.
619 visitas
Capítulo 3 – Creación del Proyecto Android y Dependencias »
Descarga el código del proyecto
Descarga el código fuente del proyecto adquiriendo el curso completo
Comprar