C# 什么';这是两种基于属性的路由方法之间的区别:HttpGet(“HttpGet”)和Route(“Route”)?

C# 什么';这是两种基于属性的路由方法之间的区别:HttpGet(“HttpGet”)和Route(“Route”)?,c#,asp.net,asp.net-core,network-programming,C#,Asp.net,Asp.net Core,Network Programming,我正在查找有关基于属性的路由的信息,发现有两种不同的属性可以使用:HttpGet(“”和Route(“”)。然而,我找不到任何关于它们之间区别的信息 它们中是否有一个是为了支持旧的ASP版本而存在的,或者这有不同的原因 另外,我的代码可能不完全正确,因为我刚刚开始学习ASP。如果有什么不清楚的地方,我会尽力解释 public class MyController : Controller { // APPROACH 1 [Route("api/books")] [Http

我正在查找有关基于属性的路由的信息,发现有两种不同的属性可以使用:
HttpGet(“”
Route(“”
)。然而,我找不到任何关于它们之间区别的信息

它们中是否有一个是为了支持旧的ASP版本而存在的,或者这有不同的原因

另外,我的代码可能不完全正确,因为我刚刚开始学习ASP。如果有什么不清楚的地方,我会尽力解释

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
    }
}
公共类MyController:Controller
{
//方法1
[路线(“api/books”)]
[HttpGet]
公共异步列表GetBooks()
{
//实施
}
//方法2
[HttpGet(“api/books”)]
公共异步列表GetBooks()
{
//实施
}
}

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

我可以为
[HttpGet]
使用
[Route(“get/{query}”,Name=“getWithPagination”)]
吗?