{"id":62887,"date":"2022-12-16T14:10:36","date_gmt":"2022-12-16T13:10:36","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=62887&#038;preview=true&#038;preview_id=62887"},"modified":"2023-02-01T15:11:36","modified_gmt":"2023-02-01T14:11:36","slug":"route-laravel","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/","title":{"rendered":"Le Route di Laravel"},"content":{"rendered":"<p>Quando si parla di backend, chi sviluppa deve fare i conti con le route. Le route possono essere considerate la spina dorsale del backend, poich\u00e9 ogni richiesta che il server riceve viene reindirizzata a un controller attraverso un elenco di routing che mappa le richieste ai controller o alle azioni.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/it\/blog\/framework-laravel\/\">Laravel<\/a> ci nasconde molti dettagli di implementazione e include molto zucchero sintattico per aiutare sia chi \u00e8 agli inizi con lo sviluppo che le persone pi\u00f9 esperte a sviluppare le loro applicazioni web.<\/p>\n<p>Vediamo nel dettaglio come gestire le route in Laravel.<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Routing e Cross-Site Scripting in Laravel<\/h2>\n<p>Su un server esistono route pubbliche e private. Le route pubbliche possono essere fonte di preoccupazione a causa della possibilit\u00e0 di cross-site scripting (XSS), un tipo di <a href=\"https:\/\/kinsta.com\/it\/blog\/sql-injection\/\">attacco a injection<\/a> che pu\u00f2 lasciare voi e i vostri utenti <a href=\"https:\/\/kinsta.com\/it\/blog\/tipi-di-malware\/\">vulnerabili a soggetti malintenzionati<\/a>.<\/p>\n<p>Il problema \u00e8 che un utente pu\u00f2 essere reindirizzato da una route che non richiede un token di sessione a uno che invece lo richiede, continuando ad avere accesso senza il token.<\/p>\n\n<p>Il modo pi\u00f9 semplice per risolvere questo problema \u00e8 quello di applicare un nuovo heading HTTP, aggiungendo &#8220;referrer&#8221; al percorso per mitigare questo scenario:<\/p>\n<pre><code class=\"language-php\">'main' =&gt; [\n  'path' =&gt; '\/main',\n  'referrer' =&gt; 'required,refresh-empty',\n  'target' =&gt; ControllerDashboardController::class . '::mainAction'\n]<\/code><\/pre>\n<h2>Routing di Base in Laravel<\/h2>\n<p>In <a href=\"https:\/\/kinsta.com\/it\/blog\/laravel-9\/\">Laravel<\/a>, i percorsi consentono agli utenti di indirizzare la richiesta appropriata al controller desiderato. La route Laravel pi\u00f9 semplice accetta un Identificatore Uniforme di Attivit\u00e0 (il percorso del routing) e una chiusura che pu\u00f2 essere sia una funzione che una classe.<\/p>\n<p>In Laravel, le route vengono create all&#8217;interno dei file <strong>web.php<\/strong> e <strong>api.php<\/strong>. Laravel \u00e8 dotato di due route predefinite: una per il WEB e una per l&#8217;API.<\/p>\n<p>Queste route si trovano nella cartella <strong>routes\/<\/strong>, ma vengono caricate nel file <strong>Providers\/RouteServiceProvider.php<\/strong>.<\/p>\n<figure id=\"attachment_134912\" aria-describedby=\"caption-attachment-134912\" style=\"width: 875px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/laravel-route-provider-default.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/laravel-route-provider-default.png\" alt=\"Una riga di comando che mostra lo stato predefinito del fornitore di servizi di route di Laravel.\" width=\"875\" height=\"628\"><\/a><figcaption id=\"caption-attachment-134912\" class=\"wp-caption-text\">Stato predefinito del provider di servizi di route di Laravel.<\/figcaption><\/figure>\n<p>Invece di fare questo, possiamo caricare le route direttamente all&#8217;interno di <strong>RouteServiceProvider.php<\/strong>, saltando completamente la cartella <strong>routes\/<\/strong>.<\/p>\n<figure id=\"attachment_134913\" aria-describedby=\"caption-attachment-134913\" style=\"width: 875px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/loading-laravel-routes-directly.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/loading-laravel-routes-directly.png\" alt=\"Una finestra a riga di comando che mostra il caricamento delle route Laravel direttamente nel provider.\" width=\"875\" height=\"413\"><\/a><figcaption id=\"caption-attachment-134913\" class=\"wp-caption-text\">Caricare le route di Laravel direttamente nel provider.<\/figcaption><\/figure>\n<h3>Reindirizzamenti<\/h3>\n<p>Quando definiamo una route, di solito vogliamo reindirizzare l&#8217;utente che vi accede e le ragioni di questa scelta variano molto. Pu\u00f2 essere perch\u00e9 si tratta di una route deprecata e abbiamo cambiato il backend o il server, oppure perch\u00e9 vogliamo installare l&#8217;<a href=\"https:\/\/kinsta.com\/it\/docs\/impostazioni-utente\/accesso-account\/#enable-twofactor-authentication-2fa\">autenticazione a due fattori (2FA)<\/a> e cos\u00ec via.<\/p>\n<p>Laravel offre un modo semplice per farlo. Grazie alla semplicit\u00e0 del framework, possiamo usare il metodo redirect della facciata Route, che accetta la route di ingresso e quella verso cui essere reindirizzati.<\/p>\n<p>Facoltativamente, possiamo indicare il codice di stato per il reindirizzamento come terzo parametro. Il metodo <code>permanentRedirect<\/code> avr\u00e0 la stessa funzione del metodo <code>redirect<\/code>, con la differenza che restituir\u00e0 sempre un <a href=\"https:\/\/kinsta.com\/it\/blog\/codici-di-stato-http\/\">codice di stato 301<\/a>:<\/p>\n<pre><code class=\"language-php\">\/\/ Simple redirect\nRoute::redirect(\"\/class\", \"\/myClass\");\n\n\/\/ Redirect with custom status\nRoute::redirect(\"\/home\", \"\/office\", 305);\n\n\/\/ Route redirect with 301 status code\nRoute::permanentRedirect(\"\/home\", \"office\");<\/code><\/pre>\n<p>All&#8217;interno delle route di reindirizzamento \u00e8 vietato usare le parole chiave &#8220;destination&#8221; e &#8220;status&#8221; come parametri perch\u00e9 sono riservate da Laravel.<\/p>\n<pre><code class=\"language-php\">\/\/ Illegal to use\nRoute::redirect(\"\/home\", \"\/office\/{status}\");<\/code><\/pre>\n<h3>Viste<\/h3>\n<p>Le viste sono i file <strong>.blade.php<\/strong> che usiamo per rendere il frontend della nostra applicazione Laravel. Si serve del motore di template blade ed \u00e8 il modo predefinito per costruire un&#8217;applicazione full-stack utilizzando solo Laravel.<\/p>\n<p>Se vogliamo che la nostra route restituisca una vista, possiamo semplicemente usare il metodo view della facciata Route. Questo metodo accetta un parametro di route, un nome di vista e un array opzionale di valori da passare alla vista.<\/p>\n<pre><code class=\"language-php\">\/\/ When the user accesses my-domain.com\/homepage\n\/\/ the homepage.blade.php file will be rendered\nRoute::view(\"\/homepage\", \"homepage\");<\/code><\/pre>\n<p>Supponiamo che la nostra vista voglia dire &#8220;Ciao, <code>{name}<\/code>&#8221; passando un array opzionale con quel parametro. Possiamo farlo con il seguente codice (se il parametro mancante \u00e8 richiesto dalla vista, la richiesta fallir\u00e0 e verr\u00e0 lanciato un errore):<\/p>\n<pre><code class=\"language-php\">Route::view('\/homepage', 'homepage', ['name' =&gt; \"Kinsta\"]);<\/code><\/pre>\n<h3>Elenco delle Routes<\/h3>\n<p>Con l&#8217;aumentare delle dimensioni della vostra applicazione, aumenter\u00e0 anche il numero di richieste da instradare. E con una grande quantit\u00e0 di informazioni pu\u00f2 nascere una grande confusione.<\/p>\n<p>\u00c8 qui che il sito <code>artisan route:list command<\/code> pu\u00f2 aiutarci. Fornisce una panoramica di tutte le route definite nell&#8217;applicazione, dei relativi middleware e dei controller.<\/p>\n<pre><code class=\"language-php\">php artisan route:list<\/code><\/pre>\n<p>Mostra un elenco di tutte le route senza i middleware. A questo scopo, dobbiamo usare il flag <code>-v<\/code>:<\/p>\n<pre><code class=\"language-php\"><code>php artisan route:list -v<\/code><\/code><\/pre>\n<p>In una situazione in cui si usa una progettazione orientata al dominio in cui i percorsi hanno nomi specifici nei loro percorsi, potete usare le capacit\u00e0 di filtraggio di questo comando in un modo simile:<\/p>\n<pre><code class=\"language-php\">php artisan route:list \u2013path=api\/account<\/code><\/pre>\n<p>Cos\u00ec verranno mostrati solo le route che iniziano con <strong>api\/account<\/strong>.<\/p>\n<p>D&#8217;altra parte, possiamo indicare a Laravel di escludere o includere le route definite da terzi con le opzioni <code>\u2013except-vendor<\/code> o <code>\u2013only-vendor<\/code>.<\/p>\n<h2>Parametri delle Routes<\/h2>\n<p>A volte potreste aver bisogno di catturare segmenti dell&#8217;URI con la route, come un ID utente o un token. Possiamo farlo definendo un parametro di route, che \u00e8 sempre racchiuso tra parentesi graffe (<code>{}<\/code>) e deve essere composto solo da caratteri alfabetici.<\/p>\n<p>Se le nostre route hanno delle dipendenze all&#8217;interno delle loro callback, il contenitore di servizi Laravel le inietter\u00e0 automaticamente:<\/p>\n<pre><code class=\"language-php\">use IlluminateHttpRequest;\nuse Controllers\/DashboardController;\nRoute::post('\/dashboard\/{id}, function (Request $request, string $id) {\n  return 'User:' . $id;\n}\nRoute::get('\/dashboard\/{id}, DashboardController.php);<\/code><\/pre>\n<h3>Parametri Richiesti<\/h3>\n<p>I parametri obbligatori di Laravel sono parametri delle route che non possiamo saltare quando effettuiamo una chiamata. In caso contrario, verr\u00e0 lanciato un errore:<\/p>\n<pre><code class=\"language-php\">Route::post(\"\/gdpr\/{userId}\", GetGdprDataController.php\");<\/code><\/pre>\n<p>Ora all&#8217;interno di <strong>GetGdprDataController.php<\/strong> avremo accesso diretto al parametro<strong> $userId<\/strong>.<\/p>\n<pre><code class=\"language-php\">public function __invoke(int $userId) {\n  \/\/ Use the userId that we received\u2026\n}<\/code><\/pre>\n<p>Una route pu\u00f2 contenere un numero qualsiasi di parametri. Questi vengono iniettati nei callback\/controller della route in base all&#8217;ordine in cui sono elencati:<\/p>\n<pre><code class=\"language-php\"> \/\/ api.php\nRoute::post('\/gdpr\/{userId}\/{userName}\/{userAge}', GetGdprDataController.php);\n\/\/ GetGdprDataController.php\npublic function __invoke(int $userId, string $userName, int $userAge) {\n  \/\/ Use the parameters\u2026\n}<\/code><\/pre>\n<h3>Parametri Opzionali<\/h3>\n<p>Se vogliamo fare qualcosa in una route quando \u00e8 presente solo un parametro e nient&#8217;altro, senza influenzare l&#8217;intera applicazione, possiamo aggiungere un parametro opzionale. Questi parametri opzionali sono contrassegnati dal simbolo <code>?<\/code>:<\/p>\n<pre><code class=\"language-php\"> Route::get('\/user\/{age?}', function (int $age = null) {\n  if (!$age) Log::info(\"User doesn't have age set\");\n  else Log::info(\"User's age is \" . $age);\n}\nRoute::get('\/user\/{name?}', function (int $name = \"John Doe\") {\n  Log::info(\"User's name is \" . $name);\n}<\/code><\/pre>\n<h3>Carattere Jolly della Route<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/it\/blog\/laravel-9\/\">Laravel<\/a> ci offre un modo per filtrare l&#8217;aspetto dei nostri parametri opzionali o obbligatori.<\/p>\n<p>Supponiamo di volere una stringa di un ID utente. Possiamo convalidarla in questo modo a livello di route usando il metodo <code>where<\/code>.<\/p>\n<p>Il metodo <code>where<\/code> accetta il nome del parametro e la regola regex che verr\u00e0 applicata alla convalida. Per impostazione predefinita, accetta il primo parametro, ma se ne abbiamo molti, possiamo passare un array con il nome del parametro come chiave e la regola come valore e Laravel li analizzer\u00e0 tutti per noi:<\/p>\n<pre><code class=\"language-php\">Route::get('\/user\/{age}', function (int $age) {\n  \/\/\n}-&gt;where('age', '[0-9]+');\nRoute::get('\/user\/{age}', function (int $age) {\n  \/\/\n}-&gt;where('[0-9]+');\nRoute::get('\/user\/{age}\/{name}', function (int $age, string $name) {\n  \/\/\n}-&gt;where(['age' =&gt; '[0-9]+', 'name' =&gt; '[a-z][A-z]+');<\/code><\/pre>\n<p>Possiamo fare un ulteriore passo avanti e applicare la convalida a tutti i percorsi della nostra applicazione utilizzando il metodo <code>pattern<\/code> sulla facciata <code>Route<\/code>:<\/p>\n<pre><code class=\"language-php\"> Route::pattern('id', '[0-9]+');<\/code><\/pre>\n<p>Questo metodo convalider\u00e0 ogni parametro di <code>id<\/code> con questa espressione regex. Una volta definita, verr\u00e0 applicata automaticamente a tutte le route che usano quel nome di parametro.<\/p>\n<p>Come possiamo vedere, Laravel usa il carattere <code>\/<\/code> come separatore nel percorso. Se vogliamo usarlo nel percorso, dobbiamo consentire esplicitamente che faccia parte del nostro segnaposto utilizzando una regex <code>where<\/code>.<\/p>\n<pre><code class=\"language-php\"> Route::get('\/find\/{query}', function ($query) {\n  \/\/\n})-&gt;where('query', , '.*');<\/code><\/pre>\n<p>L&#8217;unico inconveniente \u00e8 che sar\u00e0 supportato solo nell&#8217;ultimo segmento del percorso.<\/p>\n<h2>Routes con Nome<\/h2>\n<p>Come suggerisce il nome, possiamo dare un nome alle route, il che rende conveniente <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-e-un-url\/\">generare URL<\/a> o reindirizzamenti per route specifiche.<\/p>\n<h3>Come Creare Route con Nome<\/h3>\n<p>Un modo semplice per creare una route con nome \u00e8 fornito dal metodo <code>name<\/code> concatenato alla facciata <code>Route<\/code>. Il nome di ogni route deve essere unico:<\/p>\n<pre><code class=\"language-php\"> Route::get('\/', function () {\n})-&gt;name(\"homepage\");<\/code><\/pre>\n<h2>Gruppi di Routes<\/h2>\n<p>I gruppi di route vi permettono di condividere i loro attributi, come i middleware, su un gran numero di route senza doverli ridefinire su ogni singola route.<\/p>\n<h3>Middleware<\/h3>\n<p>Assegnare un middleware a tutti i percorsi che abbiamo ci permette di combinarli in un gruppo, prima di tutto utilizzando il metodo <code>group<\/code>. Una cosa da considerare \u00e8 che i middleware vengono eseguiti nell&#8217;ordine in cui vengono applicati al gruppo:<\/p>\n<pre><code class=\"language-php\"> Route:middleware(['AuthMiddleware', 'SessionMiddleware'])-&gt;group(function () {\n  Route::get('\/', function() {} );\n  Route::post('\/upload-picture', function () {} );\n});<\/code><\/pre>\n<h3>Controller<\/h3>\n<p>Quando un gruppo usa lo stesso controller, possiamo usare il metodo <code>controller<\/code> per definire il controller comune a tutte le route del gruppo. Ora dobbiamo specificare il metodo che la route chiamer\u00e0.<\/p>\n<pre><code class=\"language-php\"> Route::controller(UserController::class)-&gt;group(function () {\n  Route::get('\/orders\/{userId}', 'getOrders');\n  Route::post('\/order\/{id}', 'postOrder');\n});<\/code><\/pre>\n<h3>Route del Sottodominio<\/h3>\n<p>Il <a href=\"https:\/\/kinsta.com\/it\/blog\/sottodomini-wordpress\/\">nome di un sottodominio<\/a> \u00e8 un&#8217;informazione aggiuntiva che va all&#8217;inizio del nome di dominio di un sito web. Questo permette ai siti web di separare e organizzare i contenuti per funzioni specifiche, come negozi online, blog, presentazioni e cos\u00ec via, dal resto del sito.<\/p>\n<p>Le nostre route si possono usare per gestire il routing dei sottodomini. Possiamo catturare il dominio e una porzione del sottodominio da usare nel nostro controller e nella nostra route. Con l&#8217;aiuto del metodo <code>domain<\/code> sulla facciata <code>Route<\/code>, possiamo raggruppare le nostre route sotto un unico dominio:<\/p>\n<pre><code class=\"language-php\"> Route::domain('{store}.enterprise.com')-&gt;group(function() {\n  Route::get('order\/{id}', function (Account $account, string $id) {\n\t\/\/ Your Code\n  }\n});<\/code><\/pre>\n<h3>Prefissi e Prefissi dei Nomi<\/h3>\n<p>Ogni volta che abbiamo un gruppo di route, invece di modificarle una per una, possiamo usare le utilit\u00e0 extra che Laravel ci mette a disposizione, come per esempio <code>prefix<\/code> e <code>name<\/code> sulla facciata <code>Route<\/code>.<\/p>\n<p>Il metodo <code>prefix<\/code> pu\u00f2 essere utilizzato per prefissare ogni route del gruppo con un determinato URI, mentre il metodo <code>name<\/code> si pu\u00f2 usare per prefissare il nome di ogni route con una determinata stringa.<\/p>\n<p>Questo ci permette di creare nuovi elementi come le route amministrative senza dover modificare ogni singolo nome o prefisso per identificarle:<\/p>\n<pre><code class=\"language-php\"> Route::name('admin.\")-&gt;group(function() {\n  Route::prefix(\"admin\")-&gt;group(function() {\n\tRoute::get('\/get')-&gt;name('get');\n\tRoute::put('\/put')-&gt;name(put');\n\tRoute::post('\/post')-&gt;name('post');\n  });\n});<\/code><\/pre>\n<p>Ora gli URI per queste route saranno <code>admin\/get<\/code>, <code>admin\/put<\/code>, <code>admin\/post<\/code> e i nomi <code>admin.get<\/code>, <code>admin.put<\/code> e <code>admin.post<\/code>.<\/p>\n<h2>Caching delle Routes<\/h2>\n<p>Quando distribuisce l&#8217;applicazione sui server di produzione, un buon <a href=\"https:\/\/kinsta.com\/it\/blog\/sviluppatore-laravel\/\">sviluppatore Laravel<\/a> sfrutta la cache delle route di Laravel.<\/p>\n<h3>Cos&#8217;\u00c8 la Cache delle Routes?<\/h3>\n<p>La cache delle route riduce il tempo necessario per registrare tutte le route dell&#8217;applicazione.<\/p>\n<p>Eseguendo <code>php artisan route:cache<\/code> viene generata un&#8217;istanza di <code>Illuminate\/Routing\/RouteCollection<\/code> e, dopo essere stata codificata, l&#8217;output serializzato viene scritto in <code>bootstrap\/cache.routes.php<\/code>.<\/p>\n<p>Ora qualsiasi altra richiesta <a href=\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/\">caricher\u00e0 questo file di cache<\/a>, se esiste. Pertanto, la nostra applicazione non deve pi\u00f9 analizzare e convertire le voci del file dei percorsi in oggetti <code>Illuminate\/Routing\/Route<\/code> in <code>Illuminate\/Routing\/RouteCollection<\/code>.<\/p>\n<h3>Perch\u00e9 \u00c8 Importante Usare la Cache delle Routes<\/h3>\n<p>Se non usate la funzione di caching delle route offerta da Laravel, la vostra applicazione rischia di funzionare pi\u00f9 lentamente di quanto potrebbe, con il rischio di ridurre le vendite, la fidelizzazione degli utenti e la <a href=\"https:\/\/kinsta.com\/it\/blog\/badge-di-fiducia\/\">fiducia nel vostro marchio<\/a>.<\/p>\n<p>A seconda della scala del vostro progetto e del numero di route, l&#8217;esecuzione di un semplice comando di caching delle route pu\u00f2 <a href=\"https:\/\/kinsta.com\/it\/blog\/speed-test-sito-web\/\">accelerare la vostra applicazione<\/a> dal 130% al 500%: un guadagno enorme a fronte di uno sforzo quasi nullo.<\/p>\n<h2>Riepilogo<\/h2>\n<p>Il routing \u00e8 la spina dorsale dello sviluppo backend. Il framework Laravel eccelle in questo senso, fornendo un modo verboso di definire e gestire i percorsi.<\/p>\n\n<p>Lo sviluppo pu\u00f2 essere accessibile a chiunque e contribuire a <a href=\"https:\/\/kinsta.com\/it\/blog\/prestazioni-laravel\/\">velocizzare un&#8217;applicazione<\/a> solo in virt\u00f9 del fatto che \u00e8 stata realizzata in Laravel.<\/p>\n<p>Quali altri trucchi e suggerimenti avete riscontrato riguardo alle rotte di Laravel? Fatecelo sapere nella sezione commenti!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando si parla di backend, chi sviluppa deve fare i conti con le route. Le route possono essere considerate la spina dorsale del backend, poich\u00e9 ogni &#8230;<\/p>\n","protected":false},"author":267,"featured_media":62888,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[25528,26141,26142],"topic":[26020],"class_list":["post-62887","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-laravel","tag-laravel-routes","tag-php-frameworks","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Le Route di Laravel<\/title>\n<meta name=\"description\" content=\"Il routing \u00e8 uno degli aspetti pi\u00f9 importanti di qualsiasi applicazione backend. Ecco una solida guida alle routes e al routing di Laravel.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Le Route di Laravel\" \/>\n<meta property=\"og:description\" content=\"Il routing \u00e8 uno degli aspetti pi\u00f9 importanti di qualsiasi applicazione backend. Ecco una solida guida alle routes e al routing di Laravel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-16T13:10:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-01T14:11:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/12\/laravel-routes.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Coman Cosmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Il routing \u00e8 uno degli aspetti pi\u00f9 importanti di qualsiasi applicazione backend. Ecco una solida guida alle routes e al routing di Laravel.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/12\/laravel-routes.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Coman Cosmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/\"},\"author\":{\"name\":\"Coman Cosmin\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da\"},\"headline\":\"Le Route di Laravel\",\"datePublished\":\"2022-12-16T13:10:36+00:00\",\"dateModified\":\"2023-02-01T14:11:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/\"},\"wordCount\":1697,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/12\/laravel-routes.jpg\",\"keywords\":[\"laravel\",\"laravel routes\",\"php frameworks\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/\",\"name\":\"Le Route di Laravel\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/12\/laravel-routes.jpg\",\"datePublished\":\"2022-12-16T13:10:36+00:00\",\"dateModified\":\"2023-02-01T14:11:36+00:00\",\"description\":\"Il routing \u00e8 uno degli aspetti pi\u00f9 importanti di qualsiasi applicazione backend. Ecco una solida guida alle routes e al routing di Laravel.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/12\/laravel-routes.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/12\/laravel-routes.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Le Route di Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da\",\"name\":\"Coman Cosmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ede71ae86b38c64bcf00417fd17a686b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ede71ae86b38c64bcf00417fd17a686b?s=96&d=mm&r=g\",\"caption\":\"Coman Cosmin\"},\"description\":\"Cosmin Coman is a technology writer and developer with over 3 years of experience. Apart from writing for Kinsta, he has assisted in research at nuclear physics facilities and universities. Tech-savvy and integrated into the community, he always comes up with innovative solutions.\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/comancosmin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Le Route di Laravel","description":"Il routing \u00e8 uno degli aspetti pi\u00f9 importanti di qualsiasi applicazione backend. Ecco una solida guida alle routes e al routing di Laravel.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/","og_locale":"it_IT","og_type":"article","og_title":"Le Route di Laravel","og_description":"Il routing \u00e8 uno degli aspetti pi\u00f9 importanti di qualsiasi applicazione backend. Ecco una solida guida alle routes e al routing di Laravel.","og_url":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2022-12-16T13:10:36+00:00","article_modified_time":"2023-02-01T14:11:36+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/12\/laravel-routes.jpg","type":"image\/jpeg"}],"author":"Coman Cosmin","twitter_card":"summary_large_image","twitter_description":"Il routing \u00e8 uno degli aspetti pi\u00f9 importanti di qualsiasi applicazione backend. Ecco una solida guida alle routes e al routing di Laravel.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/12\/laravel-routes.jpg","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Coman Cosmin","Tempo di lettura stimato":"9 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/"},"author":{"name":"Coman Cosmin","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da"},"headline":"Le Route di Laravel","datePublished":"2022-12-16T13:10:36+00:00","dateModified":"2023-02-01T14:11:36+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/"},"wordCount":1697,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/12\/laravel-routes.jpg","keywords":["laravel","laravel routes","php frameworks"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/route-laravel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/","url":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/","name":"Le Route di Laravel","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/12\/laravel-routes.jpg","datePublished":"2022-12-16T13:10:36+00:00","dateModified":"2023-02-01T14:11:36+00:00","description":"Il routing \u00e8 uno degli aspetti pi\u00f9 importanti di qualsiasi applicazione backend. Ecco una solida guida alle routes e al routing di Laravel.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/route-laravel\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/12\/laravel-routes.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/12\/laravel-routes.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/route-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/it\/argomenti\/laravel\/"},{"@type":"ListItem","position":3,"name":"Le Route di Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da","name":"Coman Cosmin","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ede71ae86b38c64bcf00417fd17a686b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ede71ae86b38c64bcf00417fd17a686b?s=96&d=mm&r=g","caption":"Coman Cosmin"},"description":"Cosmin Coman is a technology writer and developer with over 3 years of experience. Apart from writing for Kinsta, he has assisted in research at nuclear physics facilities and universities. Tech-savvy and integrated into the community, he always comes up with innovative solutions.","url":"https:\/\/kinsta.com\/it\/blog\/author\/comancosmin\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/62887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/267"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=62887"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/62887\/revisions"}],"predecessor-version":[{"id":63333,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/62887\/revisions\/63333"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/62887\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/62887\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/62887\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/62887\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/62887\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/62887\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/62887\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/62887\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/62887\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/62887\/translations\/dk"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/62887\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/62888"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=62887"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=62887"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=62887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}