ASP.NET Core Web API如何构建URL?

时间:2018-04-12 18:16:58

标签: c# asp.net-core asp.net-core-routing

我有以下代码:

[Produces("application/json")]
[Route("api/[controller]")]
public class MarketReportInstancesTableController : BaseController
{
    internal readonly MyIRIntegrationDbContext Context;

    public MarketReportInstancesTableController(ILogger<MarketReportInstancesTableController> logger,
        MyIRIntegrationDbContext context) : base(logger)
    {
        Context = context;
    }

    [HttpGet (Name ="PageData")]
    public IActionResult PageData([FromQuery] IDataTablesRequest request)
    {
    .... methd body in here
    }

我尝试使用以下网址访问:

http://somehost/pca/api/MarketReportInstancesTable/pagedata

哪些不起作用,但

http://somehost/pca/api/MarketReportInstancesTable/

工作。

我的问题是,为什么路线会这样做?我想在同一个WebAPI控制器中有许多路径。

我接近错了吗?

1 个答案:

答案 0 :(得分:1)

路线中没有路线模板。您只有路线名称

  

路由名称可用于根据特定路由生成URL。 路由名称对路由的URL匹配行为没有影响,仅用于生成URL。路由名称在应用程序范围内必须是唯一的。

强调我的

//GET api/MarketReportInstancesTable/pagedata
[HttpGet ("pagedata", Name ="PageData")]
public IActionResult PageData([FromQuery] IDataTablesRequest request) {
    //.... methd body in here
}

在没有路由模板的情况下使用[HttpGet][HttpGet("")]相同,before将映射到具有路由前缀的控制器的根。

这解释了为什么你的root调用有效。

参考Routing in ASP.NET Core

参考Routing to Controller Actions