Inicio » Cursos » Carrito de Compra en Kotlin

Curso Carrito de Compra en Kotlin

Capitulo 2 ➜ 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:

  1. Ruta para productos (/products):

    php
    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() del JsonController.
    • 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.
  2. Ruta para categorías (/categories):

    php
    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() del JsonController.
    • 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:

  1. 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 tabla categories en la base de datos.
    • El resultado es enviado a la app cliente en formato JSON con el código de respuesta 200.
  2. 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 y category_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 modelo Product.
    • El formato JSON permite que los productos sean fáciles de consumir por la aplicación en Kotlin.

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.


65 visitas

Más cursos que pueden interesarte

Más cursos

© Copyright Codea App | LATAM | 2020 - 2024