如何使用 [HttpGetAttribute] 进行路由,包括 AspNet.Core WebApi 应用程序中的查询字符串?

Kon*_*ten 4 c# routes query-string asp.net-web-api asp.net-core

我有以下路由,适用于 invokation /api/demo/info/34

[Route("api/demo")]
public class Demo : Controller
{
    [HttpGet("Info/{x}")]
    public JsonResult GetInfos(string x) { ... }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想传递一个查询字符串来选择 ID,如下所示:/api/demo/info?x=34。我应该如何重新表述该属性?

当我尝试输入 时[HttpGet("Info?x={x}")],错误消息表明问号在那里无效。我想通过归因方法来解决它,并且从默认映射进行路由不是一个选项。

Mac*_*ski 7

您需要做的就是将您的属性声明为:

[HttpGet("Info")]
Run Code Online (Sandbox Code Playgroud)

同时保持方法的签名为GetInfos(string x). 在 GET 路由中,WebAPI 从签名中获取所有参数,只要查询字符串中的名称与参数名称匹配,路由中不存在的参数就可以作为查询字符串参数传递。