真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何構建可讀性更高的ASP.NETCore路由

本篇內(nèi)容介紹了“如何構建可讀性更高的ASP.NET Core路由”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)專注于平川企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設,商城網(wǎng)站建設。平川網(wǎng)站建設公司,為平川等地區(qū)提供建站服務。全流程定制設計,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務

Step by Step

        在構建項目的路由時,不管是采用大寫的 URL 路由,還是采用小寫的 URL 路由,我們首先需要確保的是,我們需要將整個項目的 URL 格式進行統(tǒng)一。不能說一個項目一部分的 URL 地址用大寫的,而另一部分采用的是小寫的 URL 地址。同時,同一個頁面的大寫的路徑以及小寫的路徑,雖然最終服務器可能都會將兩個地址指向同一個頁面,但是對于搜索引擎的收錄來說,這無疑是兩個頁面。
        試想以下,當別人告訴了我們一個有趣的網(wǎng)站,我們從瀏覽器的地址欄中輸入網(wǎng)址進行訪問。當我們輸入 URL 地址時,不管是中文輸入法還是英文輸入法,輸出的英文字母都是小寫的,此時,如果輸入的網(wǎng)址中存在大寫字母,嗯,我們還需要使用 CapsLock 鍵進行大小寫切換。
        另外,我們知道,對于 Windows 服務器來說,因為對于路徑的大小寫不敏感,如果我們弄錯了地址的大小寫,我們還是可以進行正常的訪問的,可是,如果將應用部署到 Linux 服務器上的話。。。。

        至于更好的可讀性,這個概念可能會顯得有些主觀。簡單來說,就是當我們面對一個網(wǎng)址時,我們可以很清楚的通過這個網(wǎng)址知道這個網(wǎng)頁的主要內(nèi)容。例如,當我們看見www.youdomain.com/editor/post/new 這個網(wǎng)址時,雖然可能并沒有打開這個網(wǎng)頁,但我們還是可以大致猜到這個頁面可能是新增文章的??墒?,如果你收到的網(wǎng)址是 www.youdomain.com/9rg7f2/i?HXI-D+iaj34 這樣的,沒人能知道這個頁面到底是干啥的。

        因此,為了便捷輸入,首先我們需要將我們的 URL 地址轉(zhuǎn)換成小寫的形式,在 ASP.NET Core 中,微軟提供了 RoutingServiceCollectionExtensions.AddRouting 這個擴展方法可以讓我們將 URL 地址轉(zhuǎn)換成小寫。
        打開項目的 Startup.cs 文件,找到 ConfigureServices 方法,在方法體內(nèi)添加下面的代碼。

1
2
3
4
services.AddRouting(options =>
{
   options.LowercaseUrls = true;
});

        示例項目的頂部鏈接代碼如下所示,運行項目可以看到,通過設置小寫路由后,程序根據(jù) Controller 和 Action 自動生成的 URL 地址全部變成了小寫。仔細觀察可以發(fā)現(xiàn),這里會出現(xiàn)一個問題。在某些特殊的情況下,Area/Controller/Action 可能是由多個英文字母拼接而成的一個混合英文單詞,如果把這個混合的單詞全部進行小寫而不進行拆分的話,整個項目的 URL 可讀性更低了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

   


        在 Startup 類中的 Configure 方法里,我們定義了針對包含 Area 和不包含 Area 的兩個路由模板,整個項目的 URL 都是根據(jù)這兩個模板進行生成的。那么這里我們是不是可以通過對單個 Controller 或是 Action 指定特殊的 URL 格式呢?

1
2
3
4
5
6
7
8
9
10
app.UseMvc(routes =>
{
   routes.MapRoute(
       name: "default",
       template: "{controller=Home}/{action=Index}/{id?}");

   routes.MapRoute(
       name: "areas",
       template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
});

        答案當然是可以的。在 ASP.NET Core 中,我們可以通過在 Controller 或是 Action 方法上添加 RouteAttribute 的方式將用戶自定義路由信息添加到項目的路由表中。例如這里我在 DraftSetting 這個 Action 上使用特性路由的方式手動指定當前 Action 生成特殊的 URL 格式。

1
2
3
4
5
6
7
8
public class PostController : Controller
{
   [Route("post/draft-setting")]
   public IActionResult DraftSetting()
   {
       return View();
   }
}


        雖然這樣可以解決我們的問題,可以一旦項目有新增頁面時,就要手動的指定特性路由地址,這樣似乎有些麻煩。那么,如何自動的讓程序幫我們實現(xiàn)這一功能呢?
        在 ASP.NET Core 2.2 版本中,微軟為我們提供了參數(shù)轉(zhuǎn)換器這一概念,我們可以通過實現(xiàn) IOutboundParameterTransformer 這個接口,從而將 URL 中路由的值或者是 URL 中路由參數(shù)的值按照我們的需求進行轉(zhuǎn)換。就像下面的代碼中,我通過實現(xiàn)這個接口,從而實現(xiàn)將多個英文單詞生成的混合單詞以 hyphen(-) 的形式進行分隔。

1
2
3
4
5
6
7
8
9
public class SlugifyParameterTransformer : IOutboundParameterTransformer
{
   public string TransformOutbound(object value)
   {
       return value == null
           ? null
           : Regex.Replace(value.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower();
   }
}

        這里我使用 hyphen(-) 作為 URL 中各個單詞間的連字符,是因為對于搜索引擎來說,它會將 - 視為單詞間分隔符,采用這種風格的 URL 更有利于搜索引擎收錄。
        當接口功能實現(xiàn)之后,我們就需要對我們的默認全局路由進行修改。首先,我們需要在路由模板上指定需要替換的路由參數(shù),這里我們指定 Area、Controller、Action 是需要進行路由參數(shù)轉(zhuǎn)換的變量。

1
2
3
4
5
6
7
8
9
10
11
app.UseMvc(routes =>
{
   routes.MapRoute(
       name: "default",
       template: "{controller:slugify=Home}/{action:slugify=Index}/{id?}");

   routes.MapRoute(
      name: "areas",
      template: "{area:exists:slugify}/{controller:slugify=Home}/{action:slugify=Index}/{id?}"
   );
});

        當定義好參數(shù)轉(zhuǎn)換器以及需要轉(zhuǎn)換的 URL 路由參數(shù)后,我們就可以在 AddRouting 方法中通過 ConstraintMap 進行配置需要轉(zhuǎn)換的參數(shù)路由值。至此就可以完成我們進行路由參數(shù)轉(zhuǎn)換的結果。

1
2
3
4
services.AddRouting(options => {
   options.ConstraintMap["slugify"] = typeof(SlugifyParameterTransformer);
   options.LowercaseUrls = true;
});

“如何構建可讀性更高的ASP.NET Core路由”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!


標題名稱:如何構建可讀性更高的ASP.NETCore路由
標題鏈接:http://weahome.cn/article/jopohh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部