当前位置: 首页 > news >正文

传媒建站推荐西安seo网络推广

传媒建站推荐,西安seo网络推广,网站门户建设方案,河北廊坊seo网站建设网站优化在本文中,我们将讨论ASP.NET Core中的新路由。我们将了解什么是接口(endpoints)路由,它是如何工作的,它在哪里使用,以及如何创建自己的路由。 本文主题: 探索接口路由创建自定义接口创建更复杂的接口 名词定义&#…

在本文中,我们将讨论ASP.NET Core中的新路由。我们将了解什么是接口(endpoints)路由,它是如何工作的,它在哪里使用,以及如何创建自己的路由。

本文主题:

  • 探索接口路由
  • 创建自定义接口
  • 创建更复杂的接口

名词定义:端点,即我们访问的接口或者叫API,有些地方叫EndPoint或者叫接口,其实源头的称呼应该叫端点会更贴切一些。或者你也可以直接叫EndPoint,但是先不管那么多,大概了解这个意思就可以了。

探索接口路由

要了解接口路由(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应用程序都需要了解系统用户,以允许或限制对特定数据的访问。在下一章中,我们将展示如何配置身份验证和识别用户。

  

http://www.zhongyajixie.com/news/62309.html

相关文章:

  • 学java做网站腾讯企业qq
  • 做网站和做推广的区别app地推接单平台有哪些
  • 广州电子软件开发株洲seo优化哪家好
  • b2b网站作用产品运营主要做什么
  • 低价网站建设推广优化百度搜索关键词排名查询
  • 网站模板打包免费b站推广网站链接
  • 自己怎么做网站游戏模板建网站价格
  • 揭阳企业自助建站系统十大seo免费软件
  • app 微商城网站建设全面网络推广营销策划
  • 可靠的东莞网站推广2023年第三波疫情9月
  • 网站制作算是什么专业网站有哪些平台
  • 页面模板分类名无法编辑网页优化方法
  • 苏州专业网站设计搜索引擎关键词优化
  • 在线设计海报的网站网站案例
  • 学做网站的视频教学杭州网站优化企业
  • 联谊会总结网站建设对外宣传发布项目信息的平台
  • 青海免费网站建设网络运营与推广
  • 建设一个网站需要注意哪些内容网址大全浏览器主页
  • 企业咨询服务郴州seo
  • 做营销型网站需要注意哪些点深圳网络提速优化服务包
  • 北京南昌企业网站制作b站推广网站入口mmm
  • 合肥网站制作前3名的百度快速收录账号购买
  • 易云巢做营销型网站自媒体视频发布平台
  • 东莞网页制作与网站设计班级优化大师简介
  • 如何在网站中加入百度地图宣传广告
  • 3322域名注册做排名优化
  • 做笑话网站赚钱百度一键安装
  • 网站开发项目的wbs数字营销策划
  • 开发一个网站做爬虫怎么提高百度搜索排名
  • 网站群建设招标潍坊网站模板建站