gpt4 book ai didi

asp.net - ASP.NET Web API中基于属性的路由与命令式路由的具体优缺点是什么?

转载 作者:行者123 更新时间:2023-12-04 22:20:49 25 4
gpt4 key购买 nike

去年,基于属性的路由被引入到ASP.NET Web API路由(http://weblogs.asp.net/scottgu/archive/2013/04/19/asp-net-web-api-cors-support-and-attribute-based-routing-improvements.aspx)的核心中。

我想添加的内容暗示它在某种程度上比应用程序启动中的标准命令式路由方法要好,但是除了开发者偏好(这不是我在这里关注的)之外,这两种方法的具体优点和缺点是什么?

更新:我应该澄清一下,“它比它更好”将更好地表述为:“它在值(value)之上增加了值(value)”。我的意思是,只有在他们认为有值(value)的情况下,他们才会添加它。所以我的问题是,这两种方法之间的利弊是什么(除了简单的偏好之外)。

最佳答案

属性路由更加干燥。例如:

[RoutePrefix("{controller}")]
[Route("{reviewId:int}/{action=Show}")]
public class ReviewsController : Controller {

public ActionResult Show(int reviewId) {
throw new NotImplementedException();
}

public ActionResult Edit(int reviewId) {
throw new NotImplementedException();
}

[Route("foo")]
public ActionResult Foo() {
throw new NotImplementedException();
}
}

为上述 Controller 创建的路由为:
routes.MapRoute(null, "{controller}/foo", 
new { controller = "Reviews", action = "Foo" });

routes.MapRoute(null, "{controller}/{reviewId}/{action}",
new { controller = "Reviews", action = "Show" },
new { reviewId = new IntRouteConstraint() });

注意:
  • 在“显示和编辑”路由中,您不必为 Controller 指定默认值,属性路由会为您提供默认值。
  • 在Foo的路由中,它继承了路由前缀,您无需指定 Controller 和操作默认值。
  • 关于asp.net - ASP.NET Web API中基于属性的路由与命令式路由的具体优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22539163/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com