Routes API
Si tu aplicación también ofrecerá una API sin estado, puedes habilitar el enrutamiento API utilizando el comando Artisan install:api
.
Dónde Escribir el Código
El código para definir rutas API debe escribirse en el archivo routes/api.php
.
Instalación de Rutas API
Para instalar las rutas API, ejecuta el siguiente comando en tu terminal:
php artisan install:api
Este comando instala Laravel Sanctum, que proporciona un guardia de autenticación de token API robusto pero simple, y crea el archivo routes/api.php
.
Ejemplo de Código
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:sanctum');
Explicación Detallada del Código
Vamos a desglosar este ejemplo para entender cada parte en detalle:
use Illuminate\Http\Request;
: Esta línea importa la clase Request de Laravel. Esta clase proporciona una forma orientada a objetos de interactuar con la solicitud HTTP actual que está siendo manejada por tu aplicación.use Illuminate\Support\Facades\Route;
: Importa la fachada Route, que proporciona una interfaz fluida para definir rutas en Laravel.Route::get('/user', ...);
: Este método define una nueva ruta que responde a solicitudes HTTP GET. El primer argumento, ‘/user’, es la URI a la que responderá esta ruta. En el contexto de una API, esta ruta será accesible enwww.conozcalaravel.test/api/user
.function (Request $request) { ... }
: Esta es una closure (función anónima) que se ejecutará cuando se acceda a la ruta. Recibe un objeto$request
como parámetro, que contiene información sobre la solicitud HTTP actual.return $request->user();
: Esta línea devuelve el usuario autenticado actualmente. El métodouser()
del objeto Request devuelve una instancia del modelo User si hay un usuario autenticado, o null si no lo hay.->middleware('auth:sanctum');
: Este método encadena el middleware ‘auth:sanctum’ a la ruta. Los middleware en Laravel son capas de lógica que se ejecutan antes de que la solicitud llegue a su destino final. En este caso, ‘auth:sanctum’ asegura que solo los usuarios autenticados con un token válido de Sanctum puedan acceder a esta ruta.
Visualización en Pantalla
Cuando hagas una solicitud GET autenticada a www.conozcalaravel.test/api/user
en tu navegador Chrome o en una herramienta como Postman, verás lo siguiente en la barra de direcciones:
www.conozcalaravel.test/api/user
La respuesta será un JSON con los datos del usuario autenticado, que podría verse así:
{
"id": 1,
"name": "John Doe",
"email": "john@example.com",
"email_verified_at": "2023-05-15T14:30:00.000000Z",
"created_at": "2023-05-01T10:00:00.000000Z",
"updated_at": "2023-05-15T14:30:00.000000Z"
}
Si no hay un usuario autenticado o el token no es válido, recibirás un error de autenticación.
Características Adicionales
Las rutas en routes/api.php
tienen algunas características especiales:
- Son sin estado (stateless): No mantienen información de sesión entre solicitudes.
- Se asignan al grupo de middleware ‘api’: Este grupo puede incluir middleware específico para APIs.
- El prefijo ‘/api’ se aplica automáticamente a estas rutas: No necesitas incluir ‘api’ en tus definiciones de ruta.
Cambiar el Prefijo API
Puedes cambiar el prefijo API modificando el archivo bootstrap/app.php
de tu aplicación:
->withRouting(
api: __DIR__.'/../routes/api.php',
apiPrefix: 'api/admin',
// ...
)
En este ejemplo, el nuevo prefijo para las rutas API sería ‘api/admin’, por lo que la ruta del ejemplo sería accesible en www.conozcalaravel.test/api/admin/user
.
Conclusión
Las rutas API en Laravel proporcionan una forma conveniente y segura de crear endpoints para tu API. Con Laravel Sanctum, puedes implementar fácilmente la autenticación para tus rutas API, lo que las hace seguras y fáciles de usar para aplicaciones de terceros, SPAs o aplicaciones móviles. La flexibilidad en la definición de rutas y la capacidad de personalizar el prefijo de la API te permiten estructurar tu aplicación de la manera que mejor se adapte a tus necesidades.
Para más información, puedes consultar:
Etiqueta:rutas