首页 > 解决方案 > 两种基于属性的路由方法:HttpGet("") 和 Route("") 有什么区别?

问题描述

我正在寻找有关基于属性的路由的信息,发现可以使用两种不同的属性:HttpGet("")Route(""). 但是,我找不到有关它们之间有什么区别的任何信息。

是否存在其中之一以支持旧的 ASP 版本,或者这有不同的原因?

PS 我的代码可能不完全正确,因为我刚刚开始学习 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
    }
}

标签: c#asp.netasp.net-corenetwork-programming

解决方案


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


推荐阅读