天天看點

ASP.NET Core MVC/WebAPi如何建構路由?前言

本節我們來講講ASP.NET Core中的路由,在講路由之前我們首先回顧下之前所講在ASP.NET Core中的模型綁定這其中有一個問題是我在項目當中遇見的,我們下面首先來看看這個問題。

我們有這樣一個場景:修改個人資料中的各個屬性,此時每個屬性的值的類型肯定是不一樣的,是以我們将值定義為object,如下model。

我們在前台進行送出,如下:

我們在背景接收傳遞的對象。

ASP.NET Core MVC/WebAPi如何建構路由?前言

此時我們看到将值類型定義為object根本接收不到值,當我将其修改為string肯定是好使的。之前以為利用表單接收任何對象都是好使的,在實際應用時卻不如我們所期望的那樣(對于此種情況暫時未找到解決方案)。在這種情況下我隻好利用contentType:"application/json"來解決,如下:

ASP.NET Core MVC/WebAPi如何建構路由?前言

隻能轉換思維來解決,好了到了這裡我們對于對象利用模型綁定遇到的問題到此結束,接下來我們開始講述路由。 

無論是在ASP.NET MVC/WebAPi還是ASP.NET Core MVC/WebAPi,我們都一直在講路由,為什麼每次都要拿出來說呢,因為它重要,從前台到背景的資料互動需要通過路由解決,是以我們需要在ASP.NET Core重點拿出來講,我們得好好說說路由的好處是什麼呢,請往下看。

SEO即Search Engine Optimization,我們翻譯過來就是搜尋引擎優化,引入路由就是為了呈現友好的SEO,一個友好的SEO即能夠非常準确的描述需要請求的資源,對于使用者而言它能更好的去擷取想要的内容,可以增加網址通路的次數,當然了也可以是網址易于收錄到搜尋引擎中。

如果沒有路由的話,如果過來一個請求此時需要映射到磁盤上真實存在的實體檔案,有了路由我們可以完全控制過來的請求,當一個确定的HTTP請求過來時我們可以引導到其到某個控制器上對應的action方法。

我們能夠知道當我們通路一個頁面時有些直接以擴充名為.aspx或者html呈現,現在我們有了路由,完全不需要擴充名并且會縮短URL的長度。

好了我們講完路由的好處,我們就要看看在ASP.NET Core中的路由到底是怎樣的呢。

這個就不用多講了,當我們建立ASP.NET Core應用程式時在Startup中就會建立預設的路由如下:

這是預設給我們建立的,看着有點不太舒服,我還是習慣将其修改如下等同的路由配置。

上述隻是我們建立的預設路由,當我們需要額外進行自定義擴充對于特定需求,是以我們如上類似再來擴充一個路由。

我們也可以配置路由特性針對控制器和Action方法,如下:

對于RESTful風格路由我們更多的是用在請求ASP.NET Core WebAPi接口上,如下:

那麼問題來了,如果是有參數我們該進行如何傳遞呢,當然有解決方案,如下:

此時前台請求如下:

對于參數類型是否非法,我們通過對參數進行限制來達到我們得目的,如下:

或者對參數限制為guid,如下:

當然還有其他類型參數限制就不一一列舉了。

本節我們講解了ASP.NET Core中的路由使用,比較基礎性的東西,更深入的東西參看官網資料,如若有不太了解和有所疑惑的地方請在評論中指出看到會馬上回複。

繼續閱讀