Metodos del enrutador
Laravel ofrece una variedad de métodos para definir rutas que respondan a diferentes verbos HTTP. Estos métodos permiten crear una API RESTful completa y manejar eficientemente distintos tipos de solicitudes.
Dónde Escribir el Código
El código para definir rutas debe escribirse en el archivo routes/web.php
para rutas web, o en routes/api.php
para rutas de API.
Métodos de Enrutamiento Básicos
El router de Laravel permite registrar rutas que responden a cualquier verbo HTTP:
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
Explicación Detallada del Código
Vamos a desglosar cada uno de estos métodos de enrutamiento para entender su funcionamiento y uso:
1. Route::get($uri, $callback);
Este método define una ruta que responde a solicitudes HTTP GET.
- Uso típico: Se utiliza para recuperar información.
- Ejemplo:
Route::get('/users', function () {
return User::all();
});
Cuando un usuario visita www.conozcalaravel.test/users
, la ruta devolverá todos los usuarios.
2. Route::post($uri, $callback);
Este método define una ruta que responde a solicitudes HTTP POST.
- Uso típico: Se usa para crear nuevos recursos.
- Ejemplo:
Route::post('/users', function (Request $request) {
return User::create($request->all());
});
Cuando se envía un formulario POST a www.conozcalaravel.test/users
, se creará un nuevo usuario.
3. Route::put($uri, $callback);
Este método define una ruta que responde a solicitudes HTTP PUT.
- Uso típico: Se usa para actualizar recursos existentes de manera completa.
- Ejemplo:
Route::put('/users/{id}', function (Request $request, $id) {
$user = User::findOrFail($id);
$user->update($request->all());
return $user;
});
Una solicitud PUT a www.conozcalaravel.test/users/1
actualizará completamente el usuario con ID 1.
4. Route::patch($uri, $callback);
Este método define una ruta que responde a solicitudes HTTP PATCH.
- Uso típico: Se usa para actualizaciones parciales de recursos.
- Ejemplo:
Route::patch('/users/{id}', function (Request $request, $id) {
$user = User::findOrFail($id);
$user->update($request->only(['name', 'email']));
return $user;
});
Una solicitud PATCH a www.conozcalaravel.test/users/1
actualizará solo el nombre y el email del usuario con ID 1.
5. Route::delete($uri, $callback);
Este método define una ruta que responde a solicitudes HTTP DELETE.
- Uso típico: Se usa para eliminar recursos.
- Ejemplo:
Route::delete('/users/{id}', function ($id) {
User::findOrFail($id)->delete();
return response()->json(['message' => 'Usuario eliminado']);
});
Una solicitud DELETE a www.conozcalaravel.test/users/1
eliminará el usuario con ID 1.
6. Route::options($uri, $callback);
Este método define una ruta que responde a solicitudes HTTP OPTIONS.
- Uso típico: Se usa en el contexto de CORS para informar qué métodos HTTP son permitidos.
- Ejemplo:
Route::options('/api/users', function () {
return response('', 200)
->header('Allow', 'GET, POST, OPTIONS')
->header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
});
Responde a una solicitud OPTIONS a www.conozcalaravel.test/api/users
indicando los métodos HTTP permitidos.
Métodos de Enrutamiento Múltiple
Laravel también proporciona métodos para registrar rutas que responden a múltiples verbos HTTP:
Route::match(['get', 'post'], '/', function () {
// ...
});
Route::any('/', function () {
// ...
});
7. Route::match([‘get’, ‘post’], ‘/’, function () { … });
Este método permite definir una ruta que responde a múltiples verbos HTTP especificados en el array.
- Uso típico: Cuando una misma ruta debe manejar diferentes tipos de solicitudes de manera similar.
- Ejemplo:
Route::match(['get', 'post'], '/submit-form', function (Request $request) {
if ($request->isMethod('post')) {
// Procesar el envío del formulario
return 'Formulario procesado';
}
// Mostrar el formulario
return view('form');
});
Esta ruta maneja tanto la visualización del formulario (GET) como su procesamiento (POST) en la misma URI.
8. Route::any(‘/’, function () { … });
Este método define una ruta que responde a todos los verbos HTTP.
- Uso típico: Cuando se necesita una ruta que pueda manejar cualquier tipo de solicitud HTTP.
- Ejemplo:
Route::any('/api/endpoint', function (Request $request) {
return response()->json([
'method' => $request->method(),
'data' => $request->all()
]);
});
Esta ruta responderá a cualquier tipo de solicitud HTTP a www.conozcalaravel.test/api/endpoint
, devolviendo información sobre el método utilizado y los datos enviados.
Consideraciones Importantes
Al definir múltiples rutas que comparten la misma URI, es importante tener en cuenta el orden de definición:
- Las rutas que usan los métodos
get
,post
,put
,patch
,delete
, yoptions
deben definirse antes de las rutas que usan los métodosany
,match
, yredirect
. - Esto asegura que la solicitud entrante se empareje con la ruta correcta.
Conclusión
Los métodos de enrutamiento en Laravel ofrecen una gran flexibilidad para manejar diferentes tipos de solicitudes HTTP. Ya sea que estés construyendo una API RESTful o una aplicación web tradicional, Laravel proporciona las herramientas necesarias para definir y gestionar tus rutas de manera eficiente. Recuerda siempre considerar el orden de definición de tus rutas para asegurar un comportamiento correcto de tu aplicación.
Para más información, puedes consultar:
Etiqueta:rutas