日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

在.NET 6.0中自定義接口路由的方法

瀏覽:149日期:2022-06-11 08:58:01
目錄
  • 探索接口路由
  • 創建自定義接口
  • 創建更復雜的接口
  • 總結

在本文中,我們將討論ASP.NET Core中的新路由。我們將了解什么是接口(endpoints)路由,它是如何工作的,它在哪里使用,以及如何創建自己的路由。

本文主題:

  • 探索接口路由
  • 創建自定義接口
  • 創建更復雜的接口

名詞定義:端點,即我們訪問的接口或者叫API,有些地方叫EndPoint或者叫接口,其實源頭的稱呼應該叫端點會更貼切一些?;蛘吣阋部梢灾苯咏蠩ndPoint,但是先不管那么多,大概了解這個意思就可以了。

探索接口路由

要了解接口路由(End Point),您需要了解什么是端點以及什么是路由。

端點是應用程序的一部分,當路由將傳入的請求映射到它時,端點就會被執行。

客戶端通常從服務器請求資源。大多數情況下,客戶端是一個瀏覽器。資源由指向特定目標的URL定義。除了網頁,它也可以是一個移動應用程序,從Web API請求特定JSON數據。

另一方面,執行的端點被映射到一個特定的路由,ASP.NET Core開發人員已經熟悉這樣一種路由模式:

app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => {       endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); });

如果路由或路由模式與傳入請求的URL匹配,則請求將映射到該端點。
ASP.NET Core可以映射到以下端點:

  • Controllers (例如, MVC or web APIs)
  • Razor Pages
  • SignalR (and Blazor Server)
  • gRPC services
  • Health checks

大多數端點都有非常簡單的路由模式。只有MVC和Web API端點使用更復雜的模式。Razor頁面的路由定義基于實際頁面的文件夾和文件結構。

在ASP.NET Core 2.2中引入端點之前,路由只是運用在MVC和Web API中。Razor Pages中的隱式路由是內置的,SignalR沒有路由一說。Blazor和gRPC在當時還不不知道在哪兒,健康檢查最初是作為中間件組件實現的。

引入端點路由是為了將路由與實際端點分離,說得白話一點,就是讓URL地址和實際執行的Action進行分離,這會讓框架更加靈活,同時這意味著新的端點不需要實現自己的路由。

創建自定義接口

創建端點的最簡單方法是使用lambda:

app.Map("/map", async context => {      await context.Response.WriteAsync("OK"); });

這里將/map路由映射到一個簡單的端點,該端點將單詞“OK”寫入響應流。

關于早期.NET 6.0版本的說明
.NET 6.0之前,該映射只能在Startup.cs文件中的UseEndpoints方法中,而使用.NET 6.0和新的Minimal API方法,可以在Program.cs文件中完成映射。

另外,我們需要將Microsoft.AspNetCore.Http命名空間添加到using語句中。
還可以將特定的HTTP方法(如GET、POST、PUT和DELETE)映射到端點。以下代碼顯示了如何映射GET和POST方法:

app.MapGet("/mapget", async context => {         await context.Response.WriteAsync("Map GET"); }); app.MapPost("/mappost", async context => {  await context.Response.WriteAsync("Map POST");});

我們還可以將兩個或多個HTTP方法映射到一個端點:

app.MapMethods("/mapmethods",  new[] { "DELETE", "PUT" },     async context => {await context.Response.WriteAsync("Map Methods");});

這些端點映射很像我們在第8篇定制.NET 6.0的Middleware中間件中看到的基于lambda的中間件組件,這些管道中間件會返回結果,例如基于HTML的視圖、JSON結構化數據或類似的內容。但是,端點路由是一種更靈活的輸出方式,它應該會在ASP.NET Core 3.0以后的所有版本中進行使用。

在第8篇中,我們看到我們可以像這樣的分支管道:

app.Map("/map", mapped => {     // ……  });

以上這種方式也會創建一個路由,但只會偵聽以/map開頭的URL。如果您希望有一個處理/map/{id:int?}等模式的路由引擎,來匹配/map/456而不是/map/abc,那么您應該使用前面所述的新的路由。

而那些基于lambda的端點映射,對于簡單的場景非常有用。然而,由于它們是在Program.cs中定義的,如果您想使用這種方式來實現更復雜的場景,代碼維護性將變得很差。

因此,我們應該嘗試找到一種更結構化的方法來創建自定義端點。

創建更復雜的接口

接下來,我們將創建一個健康檢查接口例子,有點類似于您在Kubernetes集群中運行應用程序時可能需要的接口,用來檢測系統的健康狀態:
我們從開發者的角度定義API接口,我們首先添加一個MapMyHealthChecks方法,作為IEndpointRouteBuilder對象上的一個擴展方法,它沒有實現:

app.MapMyHealthChecks("/myhealth");   app.MapControllerRoute(name: "default",pattern:"{controller=Home}/{action=Index}/{id?}");

為了避免混淆,我們這兒采取和之前類似的方式添加新接口,后面我們進一步來實現一下。
我們創建一個名為MapMyHealthChecksExtensions的靜態類,并在MapMyHealthCheck中放置一個擴展方法,該對象擴展IEndpointRouteBuilder接口并返回IEndpointConventionBuilder對象:

namespace RoutingSample; public static class MapMyHealthChecksExtensions {         public static IEndpointConventionBuilder  MapMyHealthChecks (this IEndpointRouteBuilder endpoints, string pattern = "/myhealth")         { // ...         } }

以上只是骨架,實際的接口將被實現為一個終止的中間件,也就是說,它不調用下一個的中間件組件,并創建響應流的輸出:

namespace RoutingSample; public class MyHealthChecksMiddleware {         private readonly ILogger _logger;         public MyHealthChecksMiddleware (RequestDelegate next, ILogger logger)         {  _logger = logger;         }         public async Task Invoke(HttpContext context)     { // add some checks here... context.Response.StatusCode = 200; context.Response.ContentType = "text/plain"; await context.Response.WriteAsync("OK");         } }

實際工作是在Invoke方法中完成的。目前,只演示200狀態碼和OK狀態響應,我們可以在這里隨意擴展該方法,例如檢查數據庫或相關服務的可用性。

接下來我們使用這個終止中間件,我們回到MapMyHealthChecks方法的框架。我們現在創建一個自己的管道,并將其映射到給定的pipeline:

var pipeline = endpoints.CreateApplicationBuilder().UseMiddleware().Build(); return endpoints.Map(pattern, pipeline).WithDisplayName("My custom health checks");

這種方法允許我們為這個新的管道添加更多的中間件。WithDisplayName擴展方法將配置的顯示名稱設置為接口,接下來按F5鍵啟動程序,并在瀏覽器中調用https://localhost:7111/myhealth。我們將看到:

請注意,端口號可能會有所不同。我們還可以將已經存在的終止中間件組件轉換為路由接口,以配置更加靈活的路由。

總結

ASP.NET Core支持請求處理并向請求提供信息的多種方法。接口路由是一種基于URL和請求的方法提供資源。
在本文,我們學習了如何使用終止中間件組件作為接口,并用將該接口映射到新的路由引擎,從而讓我們的路由變得更加強大和靈活。
每個Web應用程序都需要了解系統用戶,以允許或限制對特定數據的訪問。在下一章中,我們將展示如何配置身份驗證和識別用戶。

到此這篇關于在.NET 6.0中自定義接口路由的文章就介紹到這了,更多相關.NET 6.0自定義接口路由內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: ASP.NET
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲制服一区| 欧美a在线观看| 国产伦精品一区二区三区在线播放| 国产精品亚洲片在线播放| 首页欧美精品中文字幕| 激情国产在线| 精品国产午夜肉伦伦影院| 国产精一区二区| 国产区精品区| 国产精品亚洲综合久久| 国产精品亚洲综合久久| 国产另类在线| 免费日韩成人| 国产精品嫩模av在线| 伊人成人网在线看| 亚洲国产成人二区| 日韩久久电影| 亚洲五月婷婷| 亚洲激精日韩激精欧美精品| 久久99免费视频| 成人国产精品| 久久精品导航| 日本一区二区三区中文字幕| 日韩精品五月天| 国产精品一区免费在线| 久久伊人亚洲| 免费高潮视频95在线观看网站| 精品国产欧美日韩一区二区三区| 欧美aⅴ一区二区三区视频| 国产午夜精品一区在线观看| 日本成人中文字幕| 久久国产欧美日韩精品| 精品国产亚洲一区二区在线观看| 国产一区二区三区不卡av| 韩日一区二区三区| 亚洲精品国产精品粉嫩| 久久免费福利| 蜜桃久久久久久久| 欧美日韩伊人| 国产精品呻吟| 精品不卡一区| 日韩av在线免费观看不卡| 精品国产黄a∨片高清在线| 亚洲网站视频| 欧美亚洲网站| 黄色欧美日韩| 精品久久久久久久| 亚洲精品日本| 日本精品影院| 国产精品亚洲一区二区在线观看| 神马久久午夜| 久久国产麻豆精品| 欧美日韩国产综合网| 精品中文在线| 亚洲深夜福利| 四虎4545www国产精品| 日本a级不卡| 午夜精品网站| 91日韩在线| 最新日韩欧美| 久久精品午夜| 天堂俺去俺来也www久久婷婷| 日本91福利区| 超级白嫩亚洲国产第一| japanese国产精品| 欧美一区精品| 日韩成人亚洲| 日本不卡高清视频| 精品淫伦v久久水蜜桃| 亚洲www啪成人一区二区| 久久先锋影音| 美女久久久久久| 日韩精品看片| 亚洲3区在线| 中文字幕日本一区二区| 精品午夜久久| 中文在线а√天堂 | 精品中文一区| 婷婷久久一区| 91久久国产| 91精品婷婷色在线观看| 日韩国产欧美| 色爱av综合网| 国产99久久| 亚洲欧美日韩国产综合精品二区| 黑丝一区二区| 日韩va亚洲va欧美va久久| 日韩一区二区三区在线看| 丝袜美腿成人在线| 日本亚洲欧美天堂免费| 国产精品夜夜夜| 日韩欧美午夜| 水野朝阳av一区二区三区| 日韩精品成人| 国产精选一区| 日韩久久精品网| 亚洲主播在线| 国产精品久久免费视频| www.九色在线| 综合激情五月婷婷| 日韩伦理福利| 亚洲aa在线| 精品国产一区二| 日韩福利一区| 日本成人手机在线| 日韩黄色大片| 亚洲不卡视频| 国产高潮在线| 视频一区日韩| 久久蜜桃精品| 91综合久久爱com| 成人自拍av| 欧美久久香蕉| 伊人久久大香线蕉av不卡| 国产欧美啪啪| 免费国产亚洲视频| 日韩欧美午夜| 精品日本视频| 中文国产一区| 精品三级在线| 日韩1区2区3区| 婷婷六月综合| 麻豆视频在线观看免费网站黄| 日本中文字幕视频一区| 亚洲欧美日韩精品一区二区| 成午夜精品一区二区三区软件| 日本不卡视频一二三区| 一级欧洲+日本+国产| 久久精品二区亚洲w码| 亚洲精品人人| 国产女优一区| 亚洲a一区二区三区| 麻豆精品国产91久久久久久| 久久精品影视| 日韩av网站在线免费观看| 久久国产中文字幕| 色在线视频观看| 国产成人久久精品一区二区三区| 欧美亚洲二区| 久久精品99久久久| 日本aⅴ免费视频一区二区三区| 国产精品视区| 欧美特黄一级大片| 亚洲国产专区校园欧美| 卡一精品卡二卡三网站乱码| 亚洲精品字幕| 激情婷婷综合| 超碰在线99| 日韩视频网站在线观看| 亚洲神马久久| 麻豆国产91在线播放| 视频一区国产视频| 天堂8中文在线最新版在线| 亚洲欧美高清| 性欧美videohd高精| 综合激情婷婷| 人在线成免费视频| 日本在线不卡视频| 成人羞羞视频播放网站| 日本不卡高清| 欧美综合另类| 国产精品久久免费视频| aⅴ色国产欧美| 国产精品一区二区免费福利视频 | 99在线|亚洲一区二区| 欧美 日韩 国产一区二区在线视频 | 精品久久国产一区| 久久只有精品| 精品免费av在线| 欧美不卡在线| 日韩视频1区| 精品一区二区三区中文字幕在线| 国产调教精品| 一区二区三区四区在线看| 国产精品社区| 国产伦理一区| 91精品亚洲| 亚洲人成在线影院| 国产日韩精品视频一区二区三区| 国产精品黄色| 久久一区二区三区电影| 亚洲视频国产| 国产欧美日韩精品一区二区三区| 日韩精选在线| 天使萌一区二区三区免费观看| 日韩午夜一区| 日韩伦理在线一区| 久久不卡日韩美女| 日本在线不卡视频| 热久久免费视频| 亚洲高清激情| 国产一区二区精品福利地址| 亚洲另类黄色| 丝袜脚交一区二区| 国精品一区二区三区| 韩日一区二区| 久久国内精品自在自线400部| 国产女优一区| 午夜精品婷婷| 国产v日韩v欧美v|