基于属性的路由 VS 基于约定的路由 - ASP.net Core RESTful API 的最佳实践 [关闭]

Posted

技术标签:

【中文标题】基于属性的路由 VS 基于约定的路由 - ASP.net Core RESTful API 的最佳实践 [关闭]【英文标题】:Attribute Based Routing VS Convention Based Routing - Best Practice for ASP.net Core RESTful APIs [closed] 【发布时间】:2017-07-16 15:51:01 【问题描述】:

我是一位经验丰富的 .NET 开发人员,在过去的几天里,我在 .NET Core 中迈出了第一步,更具体地说,是使用 ASP.net Core 构建 RESTful API。

我知道有 2 种可能的路由选项 - 约定路由(传统)与基于属性的路由(较新)。

我读到ASP.net core 的开发团队建议对 API 使用基于属性的路由,而不是传统的基于约定的路由,它更适合 MVC 应用程序。

我真的很想了解 - 为什么

似乎基于属性的路由使我们编写了更多代码,最终具有与传统路由相同的行为。

【问题讨论】:

这篇推荐信写在哪里,可以分享一下吗? 这个问题主要是基于意见的。阅读文档docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing 并选择最适合您需求的文档。 @emrenevayeshirazi - 我一直在观看 Kevin Dockx 的 Pluralsight 课程,内容是使用 ASP.net 核心构建 RESTful 服务。该课程的作者说那里。 @Nkosi,我已经阅读了一些关于它的文章——包括你发送的那篇。但是仍然 - 如果构建框架的团队推荐了一些东西,我想这背后是有原因的,除非它只是为了语义 @DotnetProg 已授予。但即使他们推荐它,它仍然是一种意见。这是文档This example highlights a key programming difference between attribute routing and conventional routing. Attribute routing requires more input to specify a route; the conventional default route handles routes more succinctly. However, attribute routing allows (and requires) precise control of which route templates apply to each action. 中的注释之一 【参考方案1】:

这两个选项都有效。以下是关于何时使用每一个的一些建议。 在以下情况下考虑选择传统路线:

您希望集中配置所有路由。 您使用自定义约束对象。 您有一个不想更改的现有工作应用程序

在以下情况下考虑选择属性路由:

您希望将路线与操作代码保持在一起 您正在创建一个新应用程序或对某个应用程序进行重大更改 现有的。 您希望将路由参数名称与方法(操作)的实际参数匹配,这将使路由参数更具描述性,并省略路由 ID 不匹配的奇怪错误,这通常是因为我们没有匹配正确配置路由,我们使用的是 asp.net 默认路由。

但是许多开发人员推荐 Attribute Routes 的原因是因为它允许您有更多的灵活性,并将路由放置在实际使用它们的操作旁边。 您可以随时从选项切换到另一个并不困难

【讨论】:

以上是关于基于属性的路由 VS 基于约定的路由 - ASP.net Core RESTful API 的最佳实践 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET的路由系统:路由映射

基于域和主机名的 ASP.NET MVC 路由

ASP.NET Core 6框架揭秘实例演示[02]:基于路由MVC和gRPC的应用开发

在 Istio VS 中基于 URI 前缀将请求路由到服务

ASP.NET MVC之路由特性以及母版页呈现方式

《ASP.NET Core 6框架揭秘》实例演示[02]:基于路由MVC和gRPC的应用开发