{"id":28523,"date":"2025-08-31T17:00:29","date_gmt":"2025-08-31T14:00:29","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/"},"modified":"2025-08-31T17:00:29","modified_gmt":"2025-08-31T14:00:29","slug":"sveltekit-2-kod-tabanli-router-olusturma","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/","title":{"rendered":"SvelteKit 2: Kod Tabanl\u0131 Router Olu\u015fturma"},"content":{"rendered":"<p>SvelteKit 2: Kod Tabanl\u0131 Router Olu\u015fturma<\/p>\n<p>SvelteKit&#8217;in dosya tabanl\u0131 y\u00f6nlendirmesi olduk\u00e7a kullan\u0131\u015fl\u0131 olsa da, b\u00fcy\u00fck ve karma\u015f\u0131k uygulamalar i\u00e7in kod tabanl\u0131 bir y\u00f6nlendirme \u00e7\u00f6z\u00fcm\u00fc daha esnek ve s\u00fcrd\u00fcr\u00fclebilir olabilir. Bu makalede, SvelteKit 2&#8217;de dosya tabanl\u0131 y\u00f6nlendirmeden kod tabanl\u0131 bir y\u00f6nlendirmeye nas\u0131l ge\u00e7i\u015f yapaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.  Karma\u015f\u0131k rota y\u00f6netimini basitle\u015ftirecek ve kodunuzun \u00f6l\u00e7eklenebilirli\u011fini art\u0131racak bu y\u00f6nteme derinlemesine dalaca\u011f\u0131z.<\/p>\n<h2>SvelteKit&#8217;te Y\u00f6nlendirme Temelleri: Dosya Tabanl\u0131 vs. Kod Tabanl\u0131<\/h2>\n<p>SvelteKit&#8217;in varsay\u0131lan y\u00f6nlendirme sistemi, dosya sistemini kullan\u0131r.  Yani, <code>src\/routes<\/code> dizinindeki dosyalar otomatik olarak rotalar olarak tan\u0131mlan\u0131r. Bu basit uygulamalar i\u00e7in idealdir, ancak uygulama b\u00fcy\u00fcd\u00fck\u00e7e, dosya yap\u0131s\u0131 karma\u015f\u0131kla\u015f\u0131r ve y\u00f6netimi zorla\u015f\u0131r.  Bu noktada kod tabanl\u0131 bir y\u00f6nlendirme, daha fazla d\u00fczen ve kontrol sa\u011flar.  Kod tabanl\u0131 y\u00f6nlendirme, rotalar\u0131 do\u011frudan kod i\u00e7inde tan\u0131mlaman\u0131za olanak tan\u0131r, bu da daha dinamik ve programlanabilir bir y\u00f6nlendirme sistemi kurman\u0131z\u0131 m\u00fcmk\u00fcn k\u0131lar.  \u00d6rne\u011fin, bir e-ticaret uygulamas\u0131nda dinamik \u00fcr\u00fcn sayfalar\u0131 olu\u015fturmak i\u00e7in veya yetkilendirme mant\u0131\u011f\u0131n\u0131 y\u00f6nlendirme sistemine entegre etmek i\u00e7in kod tabanl\u0131 y\u00f6nlendirme son derece faydal\u0131d\u0131r. Dosya tabanl\u0131 sistemde bu t\u00fcr dinamik rotalar\u0131 olu\u015fturmak olduk\u00e7a zahmetlidir.<\/p>\n<h2>SvelteKit&#8217;te Kod Tabanl\u0131 Y\u00f6nlendirme Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>SvelteKit&#8217;te kod tabanl\u0131 y\u00f6nlendirme, <code>+page.js<\/code> veya <code>+page.server.js<\/code> dosyalar\u0131nda <code>load<\/code> fonksiyonunu kullanarak ger\u00e7ekle\u015ftirilir.  <code>load<\/code> fonksiyonu, bir rotada sunucudan veri \u00e7ekmek veya y\u00f6nlendirme mant\u0131\u011f\u0131n\u0131 uygulamak i\u00e7in ideal bir yerdir.  Bu fonksiyon bir <code>redirect<\/code> nesnesi d\u00f6nd\u00fcrerek kullan\u0131c\u0131n\u0131n ba\u015fka bir sayfaya y\u00f6nlendirilmesini sa\u011flayabilir. <\/p>\n<h3>Basit Bir Kod Tabanl\u0131 Y\u00f6nlendirme \u00d6rne\u011fi<\/h3>\n<p>A\u015fa\u011f\u0131daki \u00f6rnekte, <code>\/<\/code> rotas\u0131ndan <code>\/about<\/code> rotas\u0131na bir y\u00f6nlendirme yap\u0131yoruz:<\/p>\n<pre><code class=\"language-javascript\">\/\/ src\/routes\/+page.server.js\n\nexport const load = async ({ fetch, params }) => {\n  return {\n    redirect: &#039;\/about&#039;\n  };\n};<\/pre>\n<p><\/code><\/p>\n<p>Bu kod, <code>\/<\/code> rotas\u0131na eri\u015fen bir kullan\u0131c\u0131n\u0131n otomatik olarak <code>\/about<\/code> rotas\u0131na y\u00f6nlendirilmesini sa\u011flar.  Bu basit \u00f6rnek, kod tabanl\u0131 y\u00f6nlendirinin temel mant\u0131\u011f\u0131n\u0131 g\u00f6sterir.  Daha karma\u015f\u0131k senaryolar i\u00e7in, y\u00f6nlendirme karar\u0131n\u0131 verilerin veya kullan\u0131c\u0131 durumunun etkilemesine izin verebilirsiniz.  \u00d6rne\u011fin, oturum a\u00e7mam\u0131\u015f bir kullan\u0131c\u0131n\u0131n giri\u015f sayfas\u0131na y\u00f6nlendirilmesini sa\u011flayabilirsiniz.<\/p>\n<h2>Dinamik Rotalar ve Kod Tabanl\u0131 Y\u00f6nlendirme<\/h2>\n<p>Dinamik rotalar, URL'lerde de\u011fi\u015fken de\u011ferler i\u00e7eren rotalard\u0131r. \u00d6rne\u011fin, bir blog uygulamas\u0131nda her bir blog yaz\u0131s\u0131n\u0131n kendi URL'sine sahip olmas\u0131 i\u00e7in dinamik rotalar kullan\u0131l\u0131r.  Kod tabanl\u0131 y\u00f6nlendirme, bu dinamik rotalar\u0131 y\u00f6netmek i\u00e7in \u00e7ok g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.  <code>params<\/code> nesnesi, URL'deki dinamik segmentleri tutar ve bu segmentleri kullanarak farkl\u0131 y\u00f6nlendirme kararlar\u0131 alabilirsiniz.<\/p>\n<h3>Dinamik Rotalar \u0130\u00e7in Kod Tabanl\u0131 Y\u00f6nlendirme \u00d6rne\u011fi<\/h3>\n<p>\u015eimdi, bir blog uygulamas\u0131nda blog g\u00f6nderilerinin ID'sini kullanarak dinamik bir y\u00f6nlendirme \u00f6rne\u011fi ele alal\u0131m.  Varsayal\u0131m ki, <code>\/blog\/[id]<\/code> rotas\u0131nda, belirli bir blog g\u00f6nderisinin detaylar\u0131n\u0131 g\u00f6r\u00fcnt\u00fclemek istiyoruz.  Ancak, baz\u0131 g\u00f6nderiler silindiyse, kullan\u0131c\u0131lar\u0131 farkl\u0131 bir sayfaya y\u00f6nlendirmek isteyebiliriz.<\/p>\n<pre><code class=\"language-javascript\">\/\/ src\/routes\/blog\/[id]\/+page.server.js\n\nexport const load = async ({ fetch, params }) => {\n  const postId = params.id;\n  const response = await fetch(<code>\/api\/posts\/${postId}<\/code>);\n\n  if (!response.ok) {\n    return {\n      redirect: &#039;\/blog\/not-found&#039;\n    };\n  }\n\n  const post = await response.json();\n  return { post };\n};<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>load<\/code> fonksiyonu \u00f6ncelikle belirli bir blog g\u00f6nderisi i\u00e7in API'den veri \u00e7eker.  E\u011fer g\u00f6nderi bulunmazsa (response.ok false ise), kullan\u0131c\u0131 <code>\/blog\/not-found<\/code> rotas\u0131na y\u00f6nlendirilir.  Bu, kullan\u0131c\u0131 deneyimini iyile\u015ftirir ve k\u0131r\u0131k ba\u011flant\u0131lar\u0131 \u00f6nler. Bu \u00f6rnekte, <code>\/api\/posts\/${postId}<\/code> gibi bir API endpoint'ine ihtiya\u00e7 duydu\u011fumuzu belirtmek \u00f6nemlidir. Bu API, blog g\u00f6nderisi verilerini sa\u011flamal\u0131d\u0131r.<\/p>\n<h2>Yetkilendirme ve Kod Tabanl\u0131 Y\u00f6nlendirme<\/h2>\n<p>Kod tabanl\u0131 y\u00f6nlendirme, yetkilendirme mant\u0131\u011f\u0131n\u0131 uygulamada \u00f6nemli rol oynar.  Kullan\u0131c\u0131n\u0131n belirli bir sayfay\u0131 g\u00f6r\u00fcnt\u00fclemek i\u00e7in gerekli izinlere sahip olup olmad\u0131\u011f\u0131n\u0131 kontrol edebilir ve yetkisiz kullan\u0131c\u0131lar\u0131 giri\u015f sayfas\u0131na veya hata sayfas\u0131na y\u00f6nlendirebilirsiniz.<\/p>\n<h3>Yetkilendirme \u00d6rne\u011fi<\/h3>\n<p>A\u015fa\u011f\u0131daki \u00f6rnekte, <code>\/admin<\/code> rotas\u0131na eri\u015fimi sadece oturum a\u00e7m\u0131\u015f ve y\u00f6netici rol\u00fcne sahip kullan\u0131c\u0131larla s\u0131n\u0131rland\u0131r\u0131yoruz:<\/p>\n<pre><code class=\"language-javascript\">\/\/ src\/routes\/admin\/+page.server.js\n\nexport const load = async ({ fetch, session }) => {\n  if (!session.user || session.user.role !== &#039;admin&#039;) {\n    return {\n      redirect: &#039;\/login&#039;\n    };\n  }\n\n  \/\/ Y\u00f6netici panosu i\u00e7in verileri burada al\u0131n\n  \/\/ ...\n};<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>session<\/code> nesnesi kullan\u0131c\u0131n\u0131n oturum bilgilerini i\u00e7erir.  E\u011fer kullan\u0131c\u0131 oturum a\u00e7mam\u0131\u015fsa veya y\u00f6netici rol\u00fcne sahip de\u011filse, <code>\/login<\/code> rotas\u0131na y\u00f6nlendirilir.  Bu \u00f6rnek, SvelteKit'in yerle\u015fik oturum y\u00f6netimi \u00f6zelli\u011fini varsayar. Daha geli\u015fmi\u015f bir yetkilendirme sistemine ihtiyac\u0131n\u0131z varsa, bir \u00fc\u00e7\u00fcnc\u00fc taraf k\u00fct\u00fcphanesi veya kendi \u00f6zel yetkilendirme \u00e7\u00f6z\u00fcm\u00fcn\u00fcz\u00fc kullanabilirsiniz.  Bu \u00e7\u00f6z\u00fcm\u00fcn g\u00fcvenli\u011fi i\u00e7in gerekli \u00f6nlemlerin al\u0131nmas\u0131 olduk\u00e7a \u00f6nemlidir. <\/p>\n<h2>Karma\u015f\u0131k Senaryolar ve \u0130leri D\u00fczey Teknikler<\/h2>\n<p>Karma\u015f\u0131k senaryolarda,  birden fazla y\u00f6nlendirme ko\u015fulu ve dinamik URL parametreleri ile \u00e7al\u0131\u015fman\u0131z gerekebilir.  Bu durumda,  \u015fartl\u0131 ifadeler ve fonksiyonel programlama tekniklerini kullanarak y\u00f6nlendirme mant\u0131\u011f\u0131n\u0131z\u0131 daha okunabilir ve s\u00fcrd\u00fcr\u00fclebilir hale getirebilirsiniz.<\/p>\n<h3>Fonksiyonel Yakla\u015f\u0131m<\/h3>\n<p>A\u015fa\u011f\u0131daki \u00f6rnek, fonksiyonel bir yakla\u015f\u0131m kullanarak farkl\u0131 y\u00f6nlendirme ko\u015fullar\u0131n\u0131 ele almaktad\u0131r:<\/p>\n<pre><code class=\"language-javascript\">\/\/ src\/routes\/+page.server.js\n\nconst handleRedirect = (condition, redirectPath) => {\n  if (condition) {\n    return { redirect: redirectPath };\n  }\n  return null;\n};\n\nexport const load = async ({ fetch, session, params }) => {\n  const redirect1 = handleRedirect(!session.user, &#039;\/login&#039;);\n  const redirect2 = handleRedirect(params.id === &#039;secret&#039;, &#039;\/error&#039;);\n\n  if (redirect1) return redirect1;\n  if (redirect2) return redirect2;\n\n  \/\/ ... di\u011fer i\u015flemler\n};<\/pre>\n<p><\/code><\/p>\n<p>Bu yakla\u015f\u0131m, kodun okunabilirli\u011fini ve s\u00fcrd\u00fcr\u00fclebilirli\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r.  Her bir y\u00f6nlendirme ko\u015fulu, ayr\u0131 bir fonksiyonda y\u00f6netilir ve bu da karma\u015f\u0131kl\u0131\u011f\u0131 azalt\u0131r.  Ayr\u0131ca, bu y\u00f6ntemi daha b\u00fcy\u00fck ve daha karma\u015f\u0131k uygulamalar i\u00e7in geni\u015fletebilirsiniz.<\/p>\n<h2>Performans Optimizasyonu<\/h2>\n<p>Kod tabanl\u0131 y\u00f6nlendirme, performans \u00fczerinde olumsuz bir etkiye sahip olabilir, \u00f6zellikle karma\u015f\u0131k y\u00f6nlendirme mant\u0131\u011f\u0131 kullan\u0131yorsan\u0131z.  Performans\u0131 optimize etmek i\u00e7in a\u015fa\u011f\u0131daki \u00f6nerileri dikkate al\u0131n:<\/p>\n<ul>\n<li>Gereksiz API \u00e7a\u011fr\u0131lar\u0131ndan ka\u00e7\u0131n\u0131n.<\/li>\n<li>Verileri \u00f6nbelle\u011fe al\u0131n.<\/li>\n<li>Y\u00f6nlendirme mant\u0131\u011f\u0131n\u0131 optimize edin, gereksiz kontrol ifadelerini azalt\u0131n.<\/li>\n<li>Karma\u015f\u0131k i\u015flemleri arka plan i\u015f par\u00e7ac\u0131klar\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131n (\u00f6rne\u011fin, <code>Promise.all<\/code> ile birden fazla API \u00e7a\u011fr\u0131s\u0131n\u0131 paralel hale getirin).<\/li>\n<\/ul>\n<h2>G\u00fcvenlik Uyar\u0131lar\u0131<\/h2>\n<p><div style=\"border: 1px solid red; padding: 10px; background-color: #FFD;\"><b>Dikkat:<\/b>  Kod tabanl\u0131 y\u00f6nlendirme olu\u015ftururken g\u00fcvenlik a\u00e7\u0131klar\u0131na dikkat edin.  Kullan\u0131c\u0131 girdisini do\u011frudan URL'lere eklemeyi \u00f6nleyin.  Her zaman kullan\u0131c\u0131 girdisini do\u011frulay\u0131n ve g\u00fcvenli olmayan karakterleri temizleyin.  Yetkilendirme i\u015flemlerini dikkatlice tasarlay\u0131n ve do\u011frulay\u0131n.<\/div>\n<\/p>\n<h2>\u00d6\u011frenme Yol Haritas\u0131<\/h2>\n<p>SvelteKit'te kod tabanl\u0131 y\u00f6nlendirmeyi \u00f6\u011frenmek i\u00e7in a\u015fa\u011f\u0131daki yol haritas\u0131n\u0131 takip edebilirsiniz:<\/p>\n<h3>Yeni Ba\u015flayanlar<\/h3>\n<ul>\n<li>SvelteKit'in temel y\u00f6nlendirme sistemini \u00f6\u011frenin (dosya tabanl\u0131).<\/li>\n<li> <code>+page.js<\/code> ve <code>+page.server.js<\/code> dosyalar\u0131n\u0131 anlay\u0131n.<\/li>\n<li> <code>load<\/code> fonksiyonunu kullanarak basit y\u00f6nlendirmeler yap\u0131n.<\/li>\n<\/ul>\n<h3>Orta Seviye<\/h3>\n<ul>\n<li>Dinamik rotalar\u0131 ve <code>params<\/code> nesnesini kullan\u0131n.<\/li>\n<li>API \u00e7a\u011fr\u0131lar\u0131 ile birle\u015ftirerek dinamik y\u00f6nlendirmeler yap\u0131n.<\/li>\n<li>Basit yetkilendirme mekanizmalar\u0131 uygulay\u0131n.<\/li>\n<\/ul>\n<h3>\u0130leri Seviye<\/h3>\n<ul>\n<li>Karma\u015f\u0131k y\u00f6nlendirme mant\u0131\u011f\u0131 i\u00e7in fonksiyonel programlama kullan\u0131n.<\/li>\n<li>Performans\u0131 optimize edin.<\/li>\n<li>G\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 \u00f6nlemek i\u00e7in \u00f6nlemler al\u0131n.<\/li>\n<li>Kendi \u00f6zel y\u00f6nlendirme \u00e7\u00f6z\u00fcmlerinizi geli\u015ftirin.<\/li>\n<\/ul>\n<h2>Sonu\u00e7<\/h2>\n<p>SvelteKit 2'de kod tabanl\u0131 y\u00f6nlendirme, b\u00fcy\u00fck ve karma\u015f\u0131k uygulamalar i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir \u00e7\u00f6z\u00fcmd\u00fcr.  Bu makalede ele ald\u0131\u011f\u0131m\u0131z teknikler, uygulaman\u0131z\u0131n \u00f6l\u00e7eklenebilirli\u011fini ve s\u00fcrd\u00fcr\u00fclebilirli\u011fini art\u0131rman\u0131za yard\u0131mc\u0131 olacakt\u0131r.  Ancak, g\u00fcvenlik \u00f6nlemlerini g\u00f6z ard\u0131 etmemek \u00f6nemlidir.  Daha fazla bilgi i\u00e7in <a href=\"https:\/\/fatihsoysal.com\">https:\/\/fatihsoysal.com<\/a> adresini ziyaret edebilirsiniz.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ul>\n<li><b>Soru:<\/b> Kod tabanl\u0131 y\u00f6nlendirme, dosya tabanl\u0131 y\u00f6nlendirmeye g\u00f6re daha m\u0131 yava\u015f? <br \/><b>Cevap:<\/b>  Genellikle de\u011fil, ancak karma\u015f\u0131k y\u00f6nlendirme mant\u0131\u011f\u0131 performans\u0131 etkileyebilir. Optimizasyon gerekli olabilir.<\/li>\n<li><b>Soru:<\/b> Kod tabanl\u0131 y\u00f6nlendirmeyi ne zaman kullanmal\u0131y\u0131m? <br \/><b>Cevap:<\/b> Uygulaman\u0131z b\u00fcy\u00fcd\u00fck\u00e7e ve karma\u015f\u0131kla\u015ft\u0131k\u00e7a, \u00f6zellikle dinamik rotalar veya yetkilendirme gerekli oldu\u011funda.<\/li>\n<li><b>Soru:<\/b>  Dosya tabanl\u0131 y\u00f6nlendirmeyle kod tabanl\u0131 y\u00f6nlendirmeyi birle\u015ftirebilir miyim? <br \/><b>Cevap:<\/b> Evet, her ikisini de bir arada kullanabilirsiniz.  \u0130htiyaca g\u00f6re farkl\u0131 yakla\u015f\u0131mlar\u0131 kombinleyebilirsiniz.<\/li>\n<li><b>Soru:<\/b>  Hata y\u00f6netimi nas\u0131l yap\u0131l\u0131r kod tabanl\u0131 y\u00f6nlendirmede? <br \/><b>Cevap:<\/b>  <code>try...catch<\/code> bloklar\u0131 ve uygun hata mesajlar\u0131 ile hata y\u00f6netimi sa\u011flamal\u0131s\u0131n\u0131z. Ayr\u0131ca, kullan\u0131c\u0131 dostu hata sayfalar\u0131 olu\u015fturmal\u0131s\u0131n\u0131z.<\/li>\n<li><b>Soru:<\/b>  \u00d6rneklerde kullan\u0131lan API endpoint'leri nas\u0131l olu\u015fturulur? <br \/><b>Cevap:<\/b>  Bu, uygulaman\u0131z\u0131n mimarisine ba\u011fl\u0131d\u0131r.  Bir REST API veya GraphQL kullanabilirsiniz.  SvelteKit'in <code>fetch<\/code> fonksiyonu ile API'lere eri\u015febilirsiniz.<\/li>\n<\/ul>\n<p>Yazar: Fatih Soysal<\/p>\n","protected":false},"excerpt":{"rendered":"SvelteKit 2: Kod Tabanl\u0131 Router Olu\u015fturma SvelteKit&#8217;in dosya tabanl\u0131 y\u00f6nlendirmesi olduk\u00e7a kullan\u0131\u015fl\u0131 olsa da, b\u00fcy\u00fck ve karma\u015f\u0131k uygulamalar&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-28523","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SvelteKit 2: Kod Tabanl\u0131 Router Olu\u015fturma<\/title>\n<meta name=\"description\" content=\"SvelteKit&#039;in dosya tabanl\u0131 y\u00f6nlendirmesi olduk\u00e7a kullan\u0131\u015fl\u0131 olsa da, b\u00fcy\u00fck ve karma\u015f\u0131k uygulamalar i\u00e7in kod tabanl\u0131 bir y\u00f6nlendirme \u00e7\u00f6z\u00fcm\u00fc daha esnek ve s\u00fcrd\u00fcr\u00fclebilir olabilir. Bu makalede, SvelteKit 2&#039;de dosya tabanl\u0131 y\u00f6nlendirmeden kod tabanl\u0131 bir y\u00f6nlendirmeye nas\u0131l ge\u00e7i\u015f yapaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Karma\u015f\u0131k rota y\u00f6netimini basitle\u015ftirecek ve kodunuzun \u00f6l\u00e7eklenebilirli\u011fini art\u0131racak bu y\u00f6nteme derinlemesine dalaca\u011f\u0131z.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SvelteKit 2: Kod Tabanl\u0131 Router Olu\u015fturma\" \/>\n<meta property=\"og:description\" content=\"SvelteKit&#039;in dosya tabanl\u0131 y\u00f6nlendirmesi olduk\u00e7a kullan\u0131\u015fl\u0131 olsa da, b\u00fcy\u00fck ve karma\u015f\u0131k uygulamalar i\u00e7in kod tabanl\u0131 bir y\u00f6nlendirme \u00e7\u00f6z\u00fcm\u00fc daha esnek ve s\u00fcrd\u00fcr\u00fclebilir olabilir. Bu makalede, SvelteKit 2&#039;de dosya tabanl\u0131 y\u00f6nlendirmeden kod tabanl\u0131 bir y\u00f6nlendirmeye nas\u0131l ge\u00e7i\u015f yapaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Karma\u015f\u0131k rota y\u00f6netimini basitle\u015ftirecek ve kodunuzun \u00f6l\u00e7eklenebilirli\u011fini art\u0131racak bu y\u00f6nteme derinlemesine dalaca\u011f\u0131z.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-31T14:00:29+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"SvelteKit 2: Kod Tabanl\u0131 Router Olu\u015fturma\",\"datePublished\":\"2025-08-31T14:00:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/\"},\"wordCount\":1367,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/\",\"name\":\"SvelteKit 2: Kod Tabanl\u0131 Router Olu\u015fturma\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-08-31T14:00:29+00:00\",\"description\":\"SvelteKit'in dosya tabanl\u0131 y\u00f6nlendirmesi olduk\u00e7a kullan\u0131\u015fl\u0131 olsa da, b\u00fcy\u00fck ve karma\u015f\u0131k uygulamalar i\u00e7in kod tabanl\u0131 bir y\u00f6nlendirme \u00e7\u00f6z\u00fcm\u00fc daha esnek ve s\u00fcrd\u00fcr\u00fclebilir olabilir. Bu makalede, SvelteKit 2'de dosya tabanl\u0131 y\u00f6nlendirmeden kod tabanl\u0131 bir y\u00f6nlendirmeye nas\u0131l ge\u00e7i\u015f yapaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Karma\u015f\u0131k rota y\u00f6netimini basitle\u015ftirecek ve kodunuzun \u00f6l\u00e7eklenebilirli\u011fini art\u0131racak bu y\u00f6nteme derinlemesine dalaca\u011f\u0131z.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SvelteKit 2: Kod Tabanl\u0131 Router Olu\u015fturma\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SvelteKit 2: Kod Tabanl\u0131 Router Olu\u015fturma","description":"SvelteKit'in dosya tabanl\u0131 y\u00f6nlendirmesi olduk\u00e7a kullan\u0131\u015fl\u0131 olsa da, b\u00fcy\u00fck ve karma\u015f\u0131k uygulamalar i\u00e7in kod tabanl\u0131 bir y\u00f6nlendirme \u00e7\u00f6z\u00fcm\u00fc daha esnek ve s\u00fcrd\u00fcr\u00fclebilir olabilir. Bu makalede, SvelteKit 2'de dosya tabanl\u0131 y\u00f6nlendirmeden kod tabanl\u0131 bir y\u00f6nlendirmeye nas\u0131l ge\u00e7i\u015f yapaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Karma\u015f\u0131k rota y\u00f6netimini basitle\u015ftirecek ve kodunuzun \u00f6l\u00e7eklenebilirli\u011fini art\u0131racak bu y\u00f6nteme derinlemesine dalaca\u011f\u0131z.","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:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/","og_locale":"tr_TR","og_type":"article","og_title":"SvelteKit 2: Kod Tabanl\u0131 Router Olu\u015fturma","og_description":"SvelteKit'in dosya tabanl\u0131 y\u00f6nlendirmesi olduk\u00e7a kullan\u0131\u015fl\u0131 olsa da, b\u00fcy\u00fck ve karma\u015f\u0131k uygulamalar i\u00e7in kod tabanl\u0131 bir y\u00f6nlendirme \u00e7\u00f6z\u00fcm\u00fc daha esnek ve s\u00fcrd\u00fcr\u00fclebilir olabilir. Bu makalede, SvelteKit 2'de dosya tabanl\u0131 y\u00f6nlendirmeden kod tabanl\u0131 bir y\u00f6nlendirmeye nas\u0131l ge\u00e7i\u015f yapaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Karma\u015f\u0131k rota y\u00f6netimini basitle\u015ftirecek ve kodunuzun \u00f6l\u00e7eklenebilirli\u011fini art\u0131racak bu y\u00f6nteme derinlemesine dalaca\u011f\u0131z.","og_url":"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-08-31T14:00:29+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"8 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"SvelteKit 2: Kod Tabanl\u0131 Router Olu\u015fturma","datePublished":"2025-08-31T14:00:29+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/"},"wordCount":1367,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/","url":"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/","name":"SvelteKit 2: Kod Tabanl\u0131 Router Olu\u015fturma","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-08-31T14:00:29+00:00","description":"SvelteKit'in dosya tabanl\u0131 y\u00f6nlendirmesi olduk\u00e7a kullan\u0131\u015fl\u0131 olsa da, b\u00fcy\u00fck ve karma\u015f\u0131k uygulamalar i\u00e7in kod tabanl\u0131 bir y\u00f6nlendirme \u00e7\u00f6z\u00fcm\u00fc daha esnek ve s\u00fcrd\u00fcr\u00fclebilir olabilir. Bu makalede, SvelteKit 2'de dosya tabanl\u0131 y\u00f6nlendirmeden kod tabanl\u0131 bir y\u00f6nlendirmeye nas\u0131l ge\u00e7i\u015f yapaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Karma\u015f\u0131k rota y\u00f6netimini basitle\u015ftirecek ve kodunuzun \u00f6l\u00e7eklenebilirli\u011fini art\u0131racak bu y\u00f6nteme derinlemesine dalaca\u011f\u0131z.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/sveltekit-2-kod-tabanli-router-olusturma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SvelteKit 2: Kod Tabanl\u0131 Router Olu\u015fturma"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/28523","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=28523"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/28523\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=28523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=28523"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=28523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}