通过httpVerb属性和“ Route”属性进行路由会导致不同的路由吗?

时间:2019-12-02 21:53:40

标签: asp.net-core routing attributes asp.net-web-api-routing

我有一个简单的客户控制器(asp net core 3.0),如下所示:

Outputs:
  CognitoUserPoolId:
    Value:
      Ref: CognitoUserPool

通过[ApiController] [Route("api/v1.0/{controller}")] public class CustomerController : Controller { } {id}设置路由令牌[HttpGet]有什么区别  例如:

[Route(...)]

他们会解决类似的路线: [HttpGet] [Route("{id}")] public async Task<IActionResult> GetAsync(string id) { . . . } [HttpGet("{id}")] public async Task<IActionResult> GetAsync(string id) { . . . } 吗?

1 个答案:

答案 0 :(得分:1)

应该与document中的相同:

  

属性路由也可以使用Http [Verb]属性,例如HttpPostAttribute。所有这些属性都可以接受路由模板。

如果在操作方法上使用[Route(...)],则该操作将接受所有HTTP方法。因此建议在rest api中使用更具体的Http*Verb*Attributes

  

在构建REST API时,很少会想要在操作方法上使用[Route(...)],因为该操作将接受所有HTTP方法。最好使用更具体的Http Verb 属性来准确了解您的API支持的内容。期望REST API的客户端知道哪些路径和HTTP动词映射到特定的逻辑操作。