{"id":48053,"date":"2022-12-16T13:15:48","date_gmt":"2022-12-16T13:15:48","guid":{"rendered":"https:\/\/kinsta.com\/se\/?p=48053&#038;preview=true&#038;preview_id=48053"},"modified":"2023-01-10T10:16:51","modified_gmt":"2023-01-10T10:16:51","slug":"laravel-routes","status":"publish","type":"post","link":"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/","title":{"rendered":"Bem\u00e4stra Laravel Routes"},"content":{"rendered":"<p>Utvecklare som syssnar med backend, st\u00f6ter s\u00e5 sm\u00e5ningom p\u00e5 routes. Routes kan betraktas som ryggraden i backend eftersom varje beg\u00e4ran som servern tar emot omdirigeras till en styrenhet via en routningslista som mappar beg\u00e4randen till styrenheter eller \u00e5tg\u00e4rder.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/se\/blog\/vad-ar-laravel\/\">Laravel<\/a> d\u00f6ljer m\u00e5nga implementeringsdetaljer f\u00f6r oss och inkluderar en hel del hj\u00e4lpmedel s\u00e5 att b\u00e5de nya och erfarna utvecklare kan utveckla sina webbapplikationer.<\/p>\n<p>L\u00e5t oss ta en n\u00e4rmare titt p\u00e5 hur man hanterar routes i 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>Backend Routing och Cross-Site Scripting i Laravel<\/h2>\n<p>P\u00e5 en server s\u00e5 finns det b\u00e5de offentliga och privata routes. Offentliga routes kan vara ett bekymmer p\u00e5 grund av m\u00f6jligheten till cross-site scripting (XSS), en typ av <a href=\"https:\/\/kinsta.com\/se\/blog\/sql-injektion\/\">injektionsattack<\/a> som kan g\u00f6ra dig och dina anv\u00e4ndare <a href=\"https:\/\/kinsta.com\/blog\/types-of-malware\/\">s\u00e5rbara f\u00f6r illvilliga akt\u00f6rer<\/a>.<\/p>\n<p>Problemet \u00e4r att en anv\u00e4ndare kan omdirigeras fr\u00e5n en route som inte kr\u00e4ver en sessions-token till en route som kr\u00e4ver detta &#8211; och de har fortfarande tillg\u00e5ng utan token.<\/p>\n\n<p>Det enklaste s\u00e4ttet att l\u00f6sa problemet \u00e4r att inf\u00f6ra en ny HTTP-huvudrubrik och l\u00e4gga till &#8221;referrer&#8221; i routen f\u00f6r att minska detta 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>Laravel Basic Routing<\/h2>\n<p>I <a href=\"https:\/\/kinsta.com\/se\/blog\/laravel-9\/\">Laravel<\/a> s\u00e5 g\u00f6r routes det m\u00f6jligt f\u00f6r anv\u00e4ndare att dirigera l\u00e4mplig f\u00f6rfr\u00e5gan till den \u00f6nskade kontrollanten. Den mest grundl\u00e4ggande Laravel-routen accepterar en Uniform Asset Identifier (din route-v\u00e4g) och en closure som kan vara b\u00e5de en funktion eller en klass.<\/p>\n<p>I Laravel s\u00e5 skapas routes i filerna <strong>web.php<\/strong> och <strong>api.php<\/strong>. Laravel har som standard tv\u00e5 routes: en f\u00f6r WEB och en f\u00f6r API.<\/p>\n<p>Dessa routes finns i mappen <strong>routes\/<\/strong>, men de laddas i <strong>Providers\/RouteServiceProvider.php<\/strong>.<\/p>\n<figure 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=\"Standardtillst\u00e5nd f\u00f6r Laravels routetj\u00e4nst-leverant\u00f6r.\" width=\"875\" height=\"628\"><\/a><figcaption class=\"wp-caption-text\">Standardtillst\u00e5nd f\u00f6r Laravels routetj\u00e4nst-leverant\u00f6r.<\/figcaption><\/figure>\n<p>Ist\u00e4llet f\u00f6r att g\u00f6ra detta s\u00e5 kan vi ladda routes direkt i <strong>RouteServiceProvider.php<\/strong> och hoppa \u00f6ver mappen <strong>routes\/<\/strong> helt och h\u00e5llet.<\/p>\n<figure 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=\"Laddning av Laravel-routes direkt i leverant\u00f6ren.\" width=\"875\" height=\"413\"><\/a><figcaption class=\"wp-caption-text\">Laddning av Laravel-routes direkt i leverant\u00f6ren.<\/figcaption><\/figure>\n<h3>Omdirigeringar<\/h3>\n<p>N\u00e4r vi definierar en route s\u00e5 vill vi vanligtvis omdirigera anv\u00e4ndaren som n\u00e5r den, och orsakerna till detta varierar mycket. Det kan bero p\u00e5 att det \u00e4r en f\u00f6r\u00e5ldrad route och att vi har \u00e4ndrat backend eller servern, eller s\u00e5 kan det bero p\u00e5 att vi vill installera <a href=\"https:\/\/kinsta.com\/docs\/user-settings\/logging-in\/#enable-twofactor-authentication-2fa\">tv\u00e5faktorsautentisering (2FA)<\/a> och s\u00e5 vidare.<\/p>\n<p>Laravel har ett enkelt s\u00e4tt att g\u00f6ra detta p\u00e5. Tack vare ramverkets enkelhet s\u00e5 kan vi anv\u00e4nda omdirigerings-metoden p\u00e5 Route-fasaden, som accepterar ing\u00e5ngs-routen och routen som omdirigeringen ska ske till.<\/p>\n<p>Eventuellt s\u00e5 kan vi ange statuskoden f\u00f6r omdirigeringen som tredje parameter. Metoden <code>permanentRedirect<\/code> g\u00f6r samma sak som metoden <code>redirect<\/code>, f\u00f6rutom att den alltid returnerar en <a href=\"https:\/\/kinsta.com\/blog\/http-status-codes\/\">301-statuskod<\/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>I omdirigerings-routes \u00e4r det f\u00f6rbjudet att anv\u00e4nda nyckelorden &#8221;destination&#8221; och &#8221;status&#8221; som parametrar eftersom de \u00e4r reserverade av Laravel.<\/p>\n<pre><code class=\"language-php\">\/\/ Illegal to use\nRoute::redirect(\"\/home\", \"\/office\/{status}\");<\/code><\/pre>\n<h3>Vyer<\/h3>\n<p>Vyer \u00e4r de .<strong>blade.php<\/strong>-filer som vi anv\u00e4nder f\u00f6r att \u00e5terge frontend f\u00f6r v\u00e5r Laravel-applikation. Den anv\u00e4nder blade templating engine, och det \u00e4r standardmetoden f\u00f6r att bygga en fullstack-applikation med enbart Laravel.<\/p>\n<p>Om vi vill att v\u00e5r route ska returnera en vy s\u00e5 kan vi helt enkelt anv\u00e4nda vy-metoden p\u00e5 Route-fasaden. Den accepterar en v\u00e4gparameter, ett vynamn och en valfri array av v\u00e4rden som ska skickas till vyn.<\/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>L\u00e5t oss anta att v\u00e5r vy vill s\u00e4ga &#8221;Hello, <code>{name}<\/code>&#8221; genom att skicka en valfri array med den parametern. Vi kan g\u00f6ra just detta med f\u00f6ljande kod (om den saknade parametern kr\u00e4vs i vyn s\u00e5 kommer beg\u00e4randet att misslyckas och ett fel visas):<\/p>\n<pre><code class=\"language-php\">Route::view('\/homepage', 'homepage', ['name' =&gt; \"Kinsta\"]);<\/code><\/pre>\n<h3>Route-lista<\/h3>\n<p>I takt med att din applikation v\u00e4xer i storlek s\u00e5 \u00f6kar ocks\u00e5 antalet f\u00f6rfr\u00e5gningar som m\u00e5ste dirigeras. Och med en stor m\u00e4ngd information s\u00e5 kan det uppst\u00e5 stor f\u00f6rvirring.<\/p>\n<p>Det \u00e4r h\u00e4r som <code>artisan route:list command<\/code> kan hj\u00e4lpa oss. Den ger en \u00f6versikt \u00f6ver alla routes som \u00e4r definierade i applikationen, deras middlewares och controllers.<\/p>\n<pre><code class=\"language-php\">php artisan route:list<\/code><\/pre>\n<p>Den visar en lista \u00f6ver alla routes utan middlewares. F\u00f6r detta m\u00e5ste vi anv\u00e4nda flaggan <code>-v<\/code>:<\/p>\n<pre><code class=\"language-php\"><code>php artisan route:list -v<\/code><\/code><\/pre>\n<p>I en situation d\u00e4r du kanske anv\u00e4nder en dom\u00e4nstyrd design d\u00e4r dina routes har specifika namn i sina s\u00f6kv\u00e4gar kan du anv\u00e4nda filtreringsm\u00f6jligheterna i det h\u00e4r kommandot p\u00e5 f\u00f6ljande s\u00e4tt:<\/p>\n<pre><code class=\"language-php\">php artisan route:list \u2013path=api\/account<\/code><\/pre>\n<p>Detta visar endast de routes som b\u00f6rjar med <strong>api\/account<\/strong>.<\/p>\n<p>\u00c5 andra sidan s\u00e5 kan vi instruera Laravel att utesluta eller inkludera tredjepartsdefinierade routes genom att anv\u00e4nda alternativen <code>\u2013except-vendor<\/code> eller <code>\u2013only-vendor<\/code>.<\/p>\n<h2>Route-parametrar<\/h2>\n<p>Ibland s\u00e5 kan du beh\u00f6va f\u00e5nga upp segment av URI:n med din route, exempelvis ett anv\u00e4ndar-ID eller en token. Vi kan g\u00f6ra detta genom att definiera en route-parameter, som alltid \u00e4r inkapslad inom parenteser (<code>{}<\/code>) och som endast b\u00f6r best\u00e5 av alfabetiska tecken.<\/p>\n<p>Om v\u00e5ra routes har beroenden i sina callbacks s\u00e5 kommer Laravel-tj\u00e4nstecontainern automatiskt att injicera dem:<\/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>Parametrar som kr\u00e4vs<\/h3>\n<p>Laravels obligatoriska parametrar \u00e4r parametrar i routes som vi inte f\u00e5r hoppa \u00f6ver n\u00e4r vi g\u00f6r ett anrop. I annat fall s\u00e5 kommer ett fel att uppst\u00e5:<\/p>\n<pre><code class=\"language-php\">Route::post(\"\/gdpr\/{userId}\", GetGdprDataController.php\");<\/code><\/pre>\n<p>Nu har vi direkt tillg\u00e5ng till parametern<strong> $userId <\/strong>i <strong>GetGdprDataController.php<\/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>En route kan ta emot ett obegr\u00e4nsat antal parametrar. De injiceras i v\u00e4gkallelserna\/controllers baserat p\u00e5 den ordning i vilken de listas:<\/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>Valfria parametrar<\/h3>\n<p>I en situation d\u00e4r vi vill g\u00f6ra n\u00e5got p\u00e5 en route n\u00e4r endast en parameter \u00e4r n\u00e4rvarande och inget annat, utan att p\u00e5verka hela applikationen , kan vi l\u00e4gga till en valfri parameter. Dessa valfria parametrar betecknas med <code>?<\/code> som bifogas dem:<\/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>Route Wildcard<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/se\/blog\/laravel-9\/\">Laravel<\/a> erbjuder ett s\u00e4tt f\u00f6r oss att filtrera hur v\u00e5ra valfria eller obligatoriska parametrar ska se ut.<\/p>\n<p>S\u00e4g att vi vill ha en str\u00e4ng av ett anv\u00e4ndar-ID. Vi kan validera det s\u00e5 h\u00e4r p\u00e5 route-niv\u00e5 med hj\u00e4lp av metoden <code>where<\/code>.<\/p>\n<p>Metoden <code>where<\/code> accepterar namnet p\u00e5 parametern och den regexregel som ska till\u00e4mpas p\u00e5 valideringen. Som standard s\u00e5 tar metoden den f\u00f6rsta parametern, men om vi har m\u00e5nga s\u00e5 kan vi skicka en array med parameterns namn som nyckel och regeln som v\u00e4rde, s\u00e5 analyserar Laravel dem alla \u00e5t oss:<\/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>Vi kan ta detta ett steg l\u00e4ngre och till\u00e4mpa validering p\u00e5 alla v\u00e4gar i v\u00e5r applikation genom att anv\u00e4nda <code>pattern<\/code>-metoden p\u00e5 <code>Route<\/code>-fasaden:<\/p>\n<pre><code class=\"language-php\"> Route::pattern('id', '[0-9]+');<\/code><\/pre>\n<p>Detta validerar varje <code>id<\/code>-parameter med det h\u00e4r regexuttrycket. Och n\u00e4r vi v\u00e4l har definierat detta s\u00e5 kommer det automatiskt att till\u00e4mpas p\u00e5 alla routes som anv\u00e4nder det parameternamnet.<\/p>\n<p>Som vi kan se s\u00e5 anv\u00e4nder Laravel tecknet <code>\/<\/code> som en separator i s\u00f6kv\u00e4gen. Om vi vill anv\u00e4nda det i s\u00f6kv\u00e4gen s\u00e5 m\u00e5ste vi uttryckligen till\u00e5ta att det \u00e4r en del av v\u00e5r platscontainer med hj\u00e4lp av ett <code>where<\/code>-regex.<\/p>\n<pre><code class=\"language-php\"> Route::get('\/find\/{query}', function ($query) {\n  \/\/\n})-&gt;where('query', , '.*');<\/code><\/pre>\n<p>Den enda nackdelen \u00e4r att det endast kommer att st\u00f6djas i det sista route-segmentet.<\/p>\n<h2>Namngivna routes<\/h2>\n<p>Som namnet antyder s\u00e5 kan vi namnge routes, vilket g\u00f6r det bekv\u00e4mt att <a href=\"https:\/\/kinsta.com\/blog\/what-is-a-url\/\">generera webbadresser<\/a> eller omdirigeringar f\u00f6r specifika routes.<\/p>\n<h3>Hur man skapar namngivna routes<\/h3>\n<p>Ett enkelt s\u00e4tt att skapa en namngiven route tillhandah\u00e5lls av metoden <code>name<\/code> som \u00e4r kedjad p\u00e5 <code>Route<\/code>-fasaden. Varje routes namn b\u00f6r vara unikt:<\/p>\n<pre><code class=\"language-php\"> Route::get('\/', function () {\n})-&gt;name(\"homepage\");<\/code><\/pre>\n<h2>Route-grupper<\/h2>\n<p>Route-grupper g\u00f6r det m\u00f6jligt att dela route-attribut, t.ex. middlewares, p\u00e5 ett stort antal routes utan att beh\u00f6va omdefiniera dem p\u00e5 varje enskild route.<\/p>\n<h3>Middleware<\/h3>\n<p>Genom att tilldela en middleware till alla routes som vi har s\u00e5 kan vi kombinera dem i en grupp, f\u00f6rst med hj\u00e4lp av metoden <code>group<\/code>. En sak att t\u00e4nka p\u00e5 \u00e4r att middlewares exekveras i den ordning som de till\u00e4mpas p\u00e5 gruppen:<\/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>Controllers<\/h3>\n<p>N\u00e4r en grupp anv\u00e4nder samma styrenhet s\u00e5 kan vi anv\u00e4nda metoden <code>controller<\/code> f\u00f6r att definiera den gemensamma styrenheten f\u00f6r alla routes\u00a0 i gruppen. Nu m\u00e5ste vi ange den metod som routen ska anropa.<\/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>Routning av underdom\u00e4ner<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/se\/blog\/wordpress-subdoman\/\">Ett underdom\u00e4nnamn<\/a> \u00e4r en bit till\u00e4ggsinformation som l\u00e4ggs till i b\u00f6rjan av en webbplats dom\u00e4nnamn. Detta g\u00f6r det m\u00f6jligt f\u00f6r webbplatser att separera och organisera sitt inneh\u00e5ll f\u00f6r specifika funktioner. Det kan inkludera n\u00e4tbutiker, bloggar, presentationer och s\u00e5 vidare fr\u00e5n resten av webbplatsen.<\/p>\n<p>V\u00e5ra routes kan anv\u00e4ndas f\u00f6r att hantera routning av underdom\u00e4ner. Vi kan f\u00e5nga upp dom\u00e4nen och en del av underdom\u00e4nen f\u00f6r anv\u00e4ndning i v\u00e5r controller och route. Med hj\u00e4lp av metoden <code>domain<\/code> p\u00e5 fasaden <code>Route<\/code> s\u00e5 kan vi gruppera v\u00e5ra routes under en enda dom\u00e4n:<\/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    \/\/ Your Code\n  }\n});<\/code><\/pre>\n<h3>Prefix och namnprefix<\/h3>\n<p>N\u00e4r vi har en grupp av routes s\u00e5 kan vi, i st\u00e4llet f\u00f6r att \u00e4ndra dem en och en, anv\u00e4nda oss av de extra verktyg som Laravel tillhandah\u00e5ller. Detta inkluderar exempelvis <code>prefix<\/code> och <code>name<\/code> p\u00e5 fasaden <code>Route<\/code>.<\/p>\n<p>Metoden <code>prefix<\/code> kan anv\u00e4ndas f\u00f6r att prefixera varje route i gruppen med en given URI, och metoden <code>name<\/code> kan anv\u00e4ndas f\u00f6r att prefixera varje route-namn med en given str\u00e4ng.<\/p>\n<p>Detta g\u00f6r att vi kan skapa nya saker som administrations-routes utan att beh\u00f6va \u00e4ndra varje enskilt namn eller prefix f\u00f6r att identifiera dem:<\/p>\n<pre><code class=\"language-php\"> Route::name('admin.\")-&gt;group(function() {\n  Route::prefix(\"admin\")-&gt;group(function() {\n    Route::get('\/get')-&gt;name('get');\n    Route::put('\/put')-&gt;name(put');\n    Route::post('\/post')-&gt;name('post');\n  });\n});<\/code><\/pre>\n<p>Nu kommer URI:erna f\u00f6r dessa routes att vara <code>admin\/get<\/code>, <code>admin\/put<\/code>, <code>admin\/post<\/code>, och namnen <code>admin.get<\/code>, <code>admin.put<\/code> och <code>admin.post<\/code>.<\/p>\n<h2>Cachelagring av routes<\/h2>\n<p>N\u00e4r applikationen distribueras till produktionsservrar s\u00e5 kommer en bra <a href=\"https:\/\/kinsta.com\/blog\/laravel-developer\/\">Laravel-utvecklare<\/a> att dra nytta av Laravels route cache.<\/p>\n<h3>Vad \u00e4r Route Cachelagring?<\/h3>\n<p>Route cachelagring minskar den tid som det tar att registrera alla applikations-routes.<\/p>\n<p>Genom att k\u00f6ra <code>php artisan route:cache<\/code> s\u00e5 genereras en instans av <code>Illuminate\/Routing\/RouteCollection<\/code> och efter att ha kodats s\u00e5 skrivs det serialiserade resultatet till <code>bootstrap\/cache.routes.php<\/code>.<\/p>\n<p>Nu kommer alla andra f\u00f6rfr\u00e5gningar att <a href=\"https:\/\/kinsta.com\/se\/blog\/laravel-cachning\/\">ladda denna cache-fil<\/a> om den finns. V\u00e5r applikation beh\u00f6ver d\u00e4rf\u00f6r inte l\u00e4ngre analysera och konvertera poster fr\u00e5n route-filen till <code>Illuminate\/Routing\/Route<\/code>-objekt i <code>Illuminate\/Routing\/RouteCollection<\/code>.<\/p>\n<h3>Varf\u00f6r det \u00e4r viktigt att anv\u00e4nda Route Cachelagring<\/h3>\n<p>Om du inte anv\u00e4nder route cachelagrings-funktionen som Laravel tillhandah\u00e5ller s\u00e5 riskerar din applikation att k\u00f6ras l\u00e5ngsammare \u00e4n vad den skulle kunna g\u00f6ra, vilket i sin tur kan minska f\u00f6rs\u00e4ljningen, anv\u00e4ndarretentionen och <a href=\"https:\/\/kinsta.com\/blog\/trust-badges\/\">f\u00f6rtroendet f\u00f6r ditt varum\u00e4rke<\/a>.<\/p>\n<p>Beroende p\u00e5 projektets storlek och hur m\u00e5nga routes som det finns kan ett enkelt route cachelagrings-kommando <a href=\"https:\/\/kinsta.com\/se\/blog\/hastighetstest-for-en-webbplats\/\">snabba upp din applikation<\/a> med allt ifr\u00e5n 130 % till 500 % &#8211; en enorm vinst f\u00f6r n\u00e4stan ingen anstr\u00e4ngning alls.<\/p>\n<h2>Sammanfattning<\/h2>\n<p>Routing \u00e4r ryggraden i backendutvecklingen. Laravel-ramverket utm\u00e4rker sig p\u00e5 detta genom att tillhandah\u00e5lla ett utf\u00f6rligt s\u00e4tt att definiera och hantera routes.<\/p>\n<p>Utveckling kan verkligen vara tillg\u00e4nglig f\u00f6r alla och bidra till att <a href=\"https:\/\/kinsta.com\/se\/blog\/laravel-prestanda\/\">snabba upp en applikation<\/a> bara genom att den \u00e4r byggd i Laravel.<\/p>\n<p>Vilka andra tricks och tips har du st\u00f6tt p\u00e5 n\u00e4r det g\u00e4ller Laravel-routes? L\u00e5t oss veta i kommentarsf\u00e4ltet!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Utvecklare som syssnar med backend, st\u00f6ter s\u00e5 sm\u00e5ningom p\u00e5 routes. Routes kan betraktas som ryggraden i backend eftersom varje beg\u00e4ran som servern tar emot omdirigeras till &#8230;<\/p>\n","protected":false},"author":267,"featured_media":48054,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[310,657,653],"topic":[],"class_list":["post-48053","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-laravel","tag-laravel-routes","tag-php-frameworks"],"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>Bem\u00e4stra Laravel Routes<\/title>\n<meta name=\"description\" content=\"Routing \u00e4r en av de viktigaste aspekterna av backend-applikationer. Anv\u00e4nd denna guide f\u00f6r att f\u00e5 bra koll p\u00e5 Laravel routes och routing.\" \/>\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\/se\/blog\/laravel-routes\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bem\u00e4stra Laravel Routes\" \/>\n<meta property=\"og:description\" content=\"Routing \u00e4r en av de viktigaste aspekterna av backend-applikationer. Anv\u00e4nd denna guide f\u00f6r att f\u00e5 bra koll p\u00e5 Laravel routes och routing.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstasweden\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-16T13:15:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-10T10:16:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/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=\"Routing \u00e4r en av de viktigaste aspekterna av backend-applikationer. Anv\u00e4nd denna guide f\u00f6r att f\u00e5 bra koll p\u00e5 Laravel routes och routing.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/12\/laravel-routes.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_se\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_se\" \/>\n<meta name=\"twitter:label1\" content=\"Skriven av\" \/>\n\t<meta name=\"twitter:data1\" content=\"Coman Cosmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Ber\u00e4knad l\u00e4stid\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minuter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/\"},\"author\":{\"name\":\"Coman Cosmin\",\"@id\":\"https:\/\/kinsta.com\/se\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da\"},\"headline\":\"Bem\u00e4stra Laravel Routes\",\"datePublished\":\"2022-12-16T13:15:48+00:00\",\"dateModified\":\"2023-01-10T10:16:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/\"},\"wordCount\":1879,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/se\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/12\/laravel-routes.jpg\",\"keywords\":[\"laravel\",\"laravel routes\",\"php frameworks\"],\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/\",\"url\":\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/\",\"name\":\"Bem\u00e4stra Laravel Routes\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/se\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/12\/laravel-routes.jpg\",\"datePublished\":\"2022-12-16T13:15:48+00:00\",\"dateModified\":\"2023-01-10T10:16:51+00:00\",\"description\":\"Routing \u00e4r en av de viktigaste aspekterna av backend-applikationer. Anv\u00e4nd denna guide f\u00f6r att f\u00e5 bra koll p\u00e5 Laravel routes och routing.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#breadcrumb\"},\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/12\/laravel-routes.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/12\/laravel-routes.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/se\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bem\u00e4stra Laravel Routes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/se\/#website\",\"url\":\"https:\/\/kinsta.com\/se\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snabba, s\u00e4kra, premium hosting-l\u00f6sningar\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/se\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/se\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/se\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/se\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstasweden\/\",\"https:\/\/x.com\/kinsta_se\",\"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\/se\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da\",\"name\":\"Coman Cosmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinsta.com\/se\/#\/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\/se\/blog\/author\/comancosmin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Bem\u00e4stra Laravel Routes","description":"Routing \u00e4r en av de viktigaste aspekterna av backend-applikationer. Anv\u00e4nd denna guide f\u00f6r att f\u00e5 bra koll p\u00e5 Laravel routes och routing.","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\/se\/blog\/laravel-routes\/","og_locale":"sv_SE","og_type":"article","og_title":"Bem\u00e4stra Laravel Routes","og_description":"Routing \u00e4r en av de viktigaste aspekterna av backend-applikationer. Anv\u00e4nd denna guide f\u00f6r att f\u00e5 bra koll p\u00e5 Laravel routes och routing.","og_url":"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstasweden\/","article_published_time":"2022-12-16T13:15:48+00:00","article_modified_time":"2023-01-10T10:16:51+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/12\/laravel-routes.jpg","type":"image\/jpeg"}],"author":"Coman Cosmin","twitter_card":"summary_large_image","twitter_description":"Routing \u00e4r en av de viktigaste aspekterna av backend-applikationer. Anv\u00e4nd denna guide f\u00f6r att f\u00e5 bra koll p\u00e5 Laravel routes och routing.","twitter_image":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/12\/laravel-routes.jpg","twitter_creator":"@kinsta_se","twitter_site":"@kinsta_se","twitter_misc":{"Skriven av":"Coman Cosmin","Ber\u00e4knad l\u00e4stid":"9 minuter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/"},"author":{"name":"Coman Cosmin","@id":"https:\/\/kinsta.com\/se\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da"},"headline":"Bem\u00e4stra Laravel Routes","datePublished":"2022-12-16T13:15:48+00:00","dateModified":"2023-01-10T10:16:51+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/"},"wordCount":1879,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/se\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/12\/laravel-routes.jpg","keywords":["laravel","laravel routes","php frameworks"],"inLanguage":"sv-SE","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/","url":"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/","name":"Bem\u00e4stra Laravel Routes","isPartOf":{"@id":"https:\/\/kinsta.com\/se\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/12\/laravel-routes.jpg","datePublished":"2022-12-16T13:15:48+00:00","dateModified":"2023-01-10T10:16:51+00:00","description":"Routing \u00e4r en av de viktigaste aspekterna av backend-applikationer. Anv\u00e4nd denna guide f\u00f6r att f\u00e5 bra koll p\u00e5 Laravel routes och routing.","breadcrumb":{"@id":"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/se\/blog\/laravel-routes\/"]}]},{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#primaryimage","url":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/12\/laravel-routes.jpg","contentUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/12\/laravel-routes.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/se\/blog\/laravel-routes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/se\/"},{"@type":"ListItem","position":2,"name":"Bem\u00e4stra Laravel Routes"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/se\/#website","url":"https:\/\/kinsta.com\/se\/","name":"Kinsta\u00ae","description":"Snabba, s\u00e4kra, premium hosting-l\u00f6sningar","publisher":{"@id":"https:\/\/kinsta.com\/se\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/se\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sv-SE"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/se\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/se\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstasweden\/","https:\/\/x.com\/kinsta_se","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\/se\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da","name":"Coman Cosmin","image":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinsta.com\/se\/#\/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\/se\/blog\/author\/comancosmin\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts\/48053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/users\/267"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/comments?post=48053"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts\/48053\/revisions"}],"predecessor-version":[{"id":48450,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts\/48053\/revisions\/48450"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/48053\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/48053\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/48053\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/48053\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/48053\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/48053\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/48053\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/48053\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/48053\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/48053\/translations\/dk"},{"href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/48053\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/media\/48054"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/media?parent=48053"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/tags?post=48053"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/topic?post=48053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}