什麼是路由?解釋它在ASP.NET Core中是如何工作的


在Web應用程式框架的上下文中,路由將傳入的HTTP請求與可執行程式碼匹配。可執行程式碼充當處理請求並返回響應的端點。

ASP.NET Core在應用程式啟動時定義和配置端點。路由還負責從請求中提取值,構建合適的物件,並將它們傳遞給處理請求的方法。

從一開始,路由就是ASP.NET Core的重要組成部分。但是,ASP.NET Core 3.0引入了一個名為端點路由的新路由系統。它將路由與MVC框架分離,並使其成為ASP.NET Core更基本的功能。您仍然可以使用它來配置MVC路由,但此外,新的路由系統允許您使用以下方法配置路由:

  • 控制器

  • Razor Pages

  • SignalR

  • gRPC服務

  • 委託和Lambda表示式

您還可以使用ASP.NET Core中的路由將具有多個URL的請求對映到相同的控制器或Razor Pages。

當您使用模板生成新的ASP.NET Core應用程式時,它會在生成的程式碼中包含路由。您在中介軟體管道中註冊路由,該管道在Startup類的Configure()方法中定義。在下面的示例中,粗體程式碼配置了應用程式的路由。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env){
   if (env.IsDevelopment()){
      app.UseDeveloperExceptionPage();
   }else{
      app.UseExceptionHandler("/Error");
      // The default HSTS value is 30 days. You may want to change this for production
      app.UseHsts();
   }
   app.UseHttpsRedirection();
   app.UseStaticFiles();
   app.UseRouting();
   app.UseAuthorization();
   app.UseEndpoints(endpoints =>{
      endpoints.MapRazorPages();
   });
}
  • **UseRouting()** 方法將路由匹配新增到中介軟體管道,該管道在檢查已定義的端點後選擇與請求最匹配的端點。

  • **UseEndPoints()** 新增端點執行到中介軟體管道。

您可以透過兩種不同的方式配置路由

  • 基於約定的路由

  • 基於屬性的路由

您選擇哪種路由策略取決於您正在構建的Web應用程式的型別,即MVC或Razor Pages,以及您是構建API還是具有使用者介面的Web應用程式。

基於約定的路由適用於您的應用程式的全域性範圍,即所有MVC控制器或Razor Pages都可以使用它。您可以使用定義良好的ASP.NET Core約定定義您的控制器、方法或Razor Pages,以將請求對映到端點。儘管這種方法在大多數情況下都能很好地工作,但它使得建立自定義路由和端點變得具有挑戰性。

使用基於屬性的路由,您可以使用C#屬性(例如控制器上的[Route])將給定的URL對映到特定的端點。基於屬性的路由在為路由命名和將請求與端點匹配方面提供了更大的靈活性。您可以明確定義每個端點的URL應該是什麼。儘管它可能比較冗長,但額外的靈活性可以證明是有用的。

更新於:2021年6月22日

1K+ 瀏覽量

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.