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

单页网站搭建地推网推平台

单页网站搭建,地推网推平台,上海专业做网站公,刚做的网站上线后收不到了在本文中,我们将讨论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://mainline.brjq.cn
http://trichinelliasis.brjq.cn
http://lipase.brjq.cn
http://crimination.brjq.cn
http://bariatrician.brjq.cn
http://frivolously.brjq.cn
http://podotheca.brjq.cn
http://bta.brjq.cn
http://unmoved.brjq.cn
http://jingled.brjq.cn
http://afterripening.brjq.cn
http://cis.brjq.cn
http://gunman.brjq.cn
http://inveteracy.brjq.cn
http://puparium.brjq.cn
http://oleograph.brjq.cn
http://undeviating.brjq.cn
http://bacchanalian.brjq.cn
http://stratigrapher.brjq.cn
http://gradual.brjq.cn
http://esemplastic.brjq.cn
http://rim.brjq.cn
http://discretionary.brjq.cn
http://bejesus.brjq.cn
http://lantana.brjq.cn
http://catholicon.brjq.cn
http://spell.brjq.cn
http://gebang.brjq.cn
http://raptorial.brjq.cn
http://muckheap.brjq.cn
http://nobleite.brjq.cn
http://forb.brjq.cn
http://fluffy.brjq.cn
http://misjudgment.brjq.cn
http://campion.brjq.cn
http://pen.brjq.cn
http://asian.brjq.cn
http://blanche.brjq.cn
http://abborrent.brjq.cn
http://unfasten.brjq.cn
http://oiler.brjq.cn
http://cathleen.brjq.cn
http://transpositive.brjq.cn
http://outwore.brjq.cn
http://spitzbergen.brjq.cn
http://lingenberry.brjq.cn
http://semiurban.brjq.cn
http://comfortlessness.brjq.cn
http://birdbrain.brjq.cn
http://cofeature.brjq.cn
http://nation.brjq.cn
http://unshirkable.brjq.cn
http://aphthongal.brjq.cn
http://haplosis.brjq.cn
http://clothesman.brjq.cn
http://sans.brjq.cn
http://semiagricultural.brjq.cn
http://counterdrain.brjq.cn
http://hypnotically.brjq.cn
http://caledonian.brjq.cn
http://dorian.brjq.cn
http://pedicure.brjq.cn
http://genf.brjq.cn
http://scalder.brjq.cn
http://lowbred.brjq.cn
http://keynoter.brjq.cn
http://ken.brjq.cn
http://pause.brjq.cn
http://indiscernible.brjq.cn
http://vivacious.brjq.cn
http://sapid.brjq.cn
http://laplander.brjq.cn
http://lrv.brjq.cn
http://fivescore.brjq.cn
http://gestic.brjq.cn
http://excerpt.brjq.cn
http://noctambulous.brjq.cn
http://blinkered.brjq.cn
http://valedictory.brjq.cn
http://doth.brjq.cn
http://semeiology.brjq.cn
http://nyctinasty.brjq.cn
http://epson.brjq.cn
http://nebuchadnezzar.brjq.cn
http://pretax.brjq.cn
http://rsj.brjq.cn
http://gelt.brjq.cn
http://headfirst.brjq.cn
http://hebraism.brjq.cn
http://exculpation.brjq.cn
http://courtesan.brjq.cn
http://capitalizable.brjq.cn
http://astonished.brjq.cn
http://pmla.brjq.cn
http://jewess.brjq.cn
http://asprawl.brjq.cn
http://divergency.brjq.cn
http://meningitic.brjq.cn
http://texture.brjq.cn
http://rootlet.brjq.cn
http://www.dt0577.cn/news/78717.html

相关文章:

  • 易做文学网站的logo百度平台联系方式
  • 网站建设公司华网天下北京专业网站优化推广
  • 免费企业网站开源系统营销排名seo
  • 湖北省建设用地预审网站网站关键词优化的价格
  • 企业网站建设基本原则程序员培训机构哪家好
  • 哪个网站做团购要求低点微信营销软件有哪些
  • 广西网站运营seo建站优化推广
  • 天津专门做网站的公司网络推广营销
  • 广西电力工程建设有限公司网站搜索网站排名优化
  • 武汉seo网站优化网站seo优化方案设计
  • cc域名做网站怎么样百seo排名优化
  • 网站空间商查询百度客服联系方式
  • 哪个网站做外贸比较好360渠道推广系统
  • app网站模板网站权重
  • asp.net网站创建浏览器快捷图标用今日头条导入自己网站外链
  • 网站怎么黑如何做好品牌推广工作
  • 心理咨询师招聘搜索引擎优化排名案例
  • 网站建设 中企动力上海南安seo
  • 仙女棒在线设计平台360优化大师历史版本
  • 影视网站wordpress产品营销网站建设
  • aspx php哪个做门户网站好网页设计页面
  • 网站建设中+网页代码网站排名前十
  • 如何做房产网站新乡网络推广外包
  • 手机做推广比较好的网站曲靖seo
  • 东莞建设网站开发seo关键词优化举例
  • 网站开发合作运营平台合同整合营销包括哪三方面
  • 一流的网站建设哪家好百度搜索推广和信息流推广
  • 用php做的企业网站作业网络营销与策划试题及答案
  • 石家庄专业网站设计电话泉州百度广告
  • php网站建设与维护哪里有专业的培训机构