首页 > 解决方案 > 路由以允许来自查询字符串和默认 {id} 模板的参数

问题描述

我的 ASP.Net Core WebAPI 控制器中有一个动作,它采用一个参数。我正在尝试将其配置为能够以下列形式调用它:

api/{controller}/{action}/{id}
api/{controller}/{action}?id={id}

我似乎无法正确路由,因为我只能制作一种表格来识别。(简化的)动作签名如下所示:public ActionResult<string> Get(Guid id). 这些是我尝试过的路线:

如何配置我的操作以使用两种 URL 形式调用?

标签: asp.net-coreasp.net-core-webapi

解决方案


如果您想使用路由模板,您可以在 Startup.cs 中提供一个配置方法,如下所示:

app.UseMvc(o =>
        {
            o.MapRoute("main", "{controller}/{action}/{id?}");
        });

现在您可以使用两个请求地址。

如果要使用属性路由,可以使用相同的方式:

[HttpGet("Get/{id?}")]
public async ValueTask<IActionResult> Get(
         Guid id)
    {

        return Ok(id);
    }

推荐阅读