馃З Rutas y controladores para APIs

馃З Rutas y controladores para APIs

C贸mo conectar tus endpoints con controladores API

Laravel separa las rutas web (web.php) y las rutas API (api.php). Las rutas definidas en routes/api.php no usan sesiones ni cookies, y est谩n optimizadas para respuestas JSON. Cada ruta API apunta normalmente a un m茅todo dentro de un controlador que gestiona la l贸gica del recurso.

馃摌 Estructura b谩sica de una ruta API

En Laravel, las rutas API se definen con el archivo routes/api.php. A diferencia de las rutas web, 茅stas ya tienen prefijo /api por defecto.

routes/api.php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\ProductController;

Route::get('/products', [ProductController::class, 'index']);
Route::get('/products/{id}', [ProductController::class, 'show']);
Route::post('/products', [ProductController::class, 'store']);
Route::put('/products/{id}', [ProductController::class, 'update']);
Route::delete('/products/{id}', [ProductController::class, 'destroy']);
      

馃敼 Laravel incluye el prefijo /api autom谩ticamente, por lo que la ruta completa ser铆a https://tusitio.com/api/products.

⚙️ Controlador API de ejemplo

Cada ruta apunta a un m茅todo dentro de un controlador. Por convenci贸n, los controladores de API se ubican en app/Http/Controllers/Api/.

app/Http/Controllers/Api/ProductController.php
json(Product::all(), 200);
    }

    public function show($id) {
        $product = Product::find($id);
        if (!$product) {
            return response()->json(['message' => 'Producto no encontrado'], 404);
        }
        return response()->json($product, 200);
    }

    public function store(Request $request) {
        $product = Product::create($request->all());
        return response()->json($product, 201);
    }

    public function update(Request $request, $id) {
        $product = Product::find($id);
        if (!$product) return response()->json(['error' => 'No existe'], 404);
        $product->update($request->all());
        return response()->json($product, 200);
    }

    public function destroy($id) {
        $product = Product::find($id);
        if (!$product) return response()->json(['error' => 'No encontrado'], 404);
        $product->delete();
        return response()->json(['message' => 'Eliminado correctamente'], 200);
    }
}
?>
      

馃З Demo visual: conexi贸n ruta → controlador → respuesta

Selecciona una ruta para ver qu茅 m茅todo del controlador se ejecuta y la respuesta simulada:

✅ Buenas pr谩cticas

  • Define todas tus rutas API dentro de routes/api.php.
  • Usa controladores dedicados (por ejemplo, ProductController) en lugar de closures.
  • Utiliza php artisan make:controller NombreController --api para generar controladores optimizados para APIs.
  • Devuelve siempre JSON y c贸digos HTTP correctos (200, 201, 404, 422, etc.).

Publicar un comentario

0 Comentarios