两种基于属性的路由方法HttpGet(“”)和Route(“”)之间有什么区别?

Svi*_* V. 2 c# asp.net network-programming asp.net-core

我试图查找有关属性路由的信息,发现有两种实现方式,但是我找不到任何区别。是否由于支持旧版本或其他功能而存在它们?谢谢!

ps代码可能不是很准确,因为我刚刚开始学习ASP。pps如果不清楚,我将尝试解释。

public class MyController : Controller
{
    // APPROACH 1
    [Route("api/books")]
    [HttpGet]
    public async List<Book> GetBooks() 
    {
        // Implementation
    }

    // APPROACH 2
    [HttpGet("api/books")]
    public async List<Book> GetBooks()
    {
        // Implementation
    }
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*att 5

Route是特定于方法的,而HttpGet显然意味着仅GET请求将被接受。通常,您要使用特定的属性:HttpGetHttpPostRoute主要用于控制器,以指定该控制器中所有操作的基本路径。一个例外是如果您要为例外处理/状态代码页创建路由。然后,您应该使用Route这些操作,因为可能会通过多种方法将请求路由到那里。

  • @Jack根据这个[来源](https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-6.0#route-name)这是可能的。 (2认同)