如何为Web API构建查询字符串?

时间:2014-05-30 19:42:33

标签: c# asp.net-mvc asp.net-web-api2

假设我有Web API方法:

    [HttpGet]
    public string SomeAction([FromUri] ObjectA a, [FromUri] ObjectB b)
    {
        return Ok("test");
    }

如何使用HttpClient调用它?为对象A和B准备适当的查询字符串的最佳方法是什么?

更新

ObjectAObjectB是复杂的对象......例如

public class ObjectA 
{
    public string Prop1 { get; set; }
    public int Prop2 { get; set; }
    public double Prop3 { get; set; }
}

我可以为每个特定情况准备查询字符串,但我有兴趣获得任何允许使用任何对象的通用方法......

现在我只看到一种可能的解决方案 - 使用反射遍历属性列表并构建查询字符串。我假设应该有一些已经实现的机制......我错了吗?

1 个答案:

答案 0 :(得分:0)

如果你在查询字符串中包含复杂的对象,我会假设它们是以某种方式编码的,从你想要做的事情来看,它必须是默认编码,否则你将无法把它们放在查询字符串上。

正常路由将是:

/{controller}/{action}/{a}/{b}

/{controller}/{action}?a={content}&b={content}

取决于您如何配置路线以及您使用查询字符串参数而不是“友好”网址的偏好。

或者,MVC框架会尝试从query string, cookies所在的任何可用数据位置(即variable names = property names等)中的值中填充您的对象。在这种情况下,您可以使用以下内容:

/SomeController/SomeAction?objectaProp1=abc&objectaProp2=def...

希望这有帮助。