Todas las rutas para su interfaz se deben definir en el archivo routes/web.php.

A estas rutas se les asigna el grupo de middleware web, que proporciona características como:

  1. Estado de sesión,
  2. y Protección CSRF.

El prefijo URI /api se aplica automáticamente a las rutas definidas en el archivo routes/api.php,

El enrutador le permite registrar rutas que responden a cualquier verbo HTTP (get, post, put, patch, delete, options):

Route::any('/', function () {
    // ...
});

Pero tambien puedes usar atajos, los métodos match, any, redirect, permanentRedirect o view,

Nombres

Puedes especificar un nombre para una ruta o acciones del controlador:

Route::get('/user/profile', function () {
    // ...
})->name('profile');

Parámetros

  1. Los parámetros de ruta deben ir entre llaves {} y constar de caracteres alfabéticos (guiones bajos también son aceptables):
Route::get('/user/{id}', function (string $id) {
    return 'User '.$id;
});
  1. Puedes colocar ? después del nombre de parámetro para indicar que es opcional. En dicho caso debes darle un valor predeterminado:
Route::get('/user/{name?}', function (?string $name = 'John') {
    return $name;
});
  1. Puede restringir el parámetro utilizando el método where y una expresión regular:
Route::get('/user/{name}', function (string $name) {
    // ...
})->where('name', '[A-Za-z]+');

Métodos auxiliares

->whereNumber('id')
->whereAlpha('name')
->whereAlphaNumeric('name')
->whereUuid('id') // Para identificadores únicos 
->whereUlid('id')
->whereIn('category', ['movie', 'song', 'painting'])

Dado que los primeros bits de un UUID son siempre aleatorios, no se puede ordenar lexicográficamente. Los ULID si se pueden ordenar porque tienen un componente de tiempo incorporado.

Restricciones globales

En el método boot de tu clase App\Providers\RouteServiceProvider puedes restringir un parámetro en todas las rutas:

public function boot(): void
{
    Route::pattern('id', '[0-9]+');
}