繁体   English   中英

Web API控制器-查询字符串中的'action'参数

[英]Web API Controller - 'action' parameter in query string

我有以下Web API控制器

public class ApiController : Controller
{
    [Route("api/test")]
    [HttpGet]
    public string GetData(string key, string action, long id)
    {
        var actionFromQuery = Request.Query["action"];
        return $"{key} {action} {id}";
    }
}

我在查询字符串中需要一个名为“ action”的参数,因此它与现有API向后兼容。
当我发出一个get请求时,操作方法参数被错误地分配给Web api action ==控制器方法名称。

GET示例
http:// SERVER_IP / api / test?key = 123&action = testAction&id = 456
返回“ 123 GetData 456”

我希望它返回“ 123 testAction 456”
actionFromQuery变量已正确分配给“ testAction”。
“操作”是否是一个不能被覆盖的保留变量?
我可以通过更改某些配置来解决此问题吗?

我没有配置任何路由,只有services.AddMvc(); 和app.UseMvc(); 在我的启动中。

已解决此评论

添加[FromQuery]帮助并正确分配了变量

public class ApiController : Controller
{
    [Route("api/test")]
    [HttpGet]
    public string GetData(string key, [FromQuery] string action, long id)
    {
        return $"{key} {action} {id}";
    }
}

在WebApi路由中,动作参数与路径定义中的占位符配对,并用大括号括起来,例如/ api / {foobar} / {baz}。

您面临的问题是{controller}和{action}是“特殊”占位符,分别为Controller和Action方法的名称保留(尽管WebApi路由通常省略后者)。

我还没有找到解决方法,但是:(

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM