假设我有Web API方法:
[HttpGet]
public string SomeAction([FromUri] ObjectA a, [FromUri] ObjectB b)
{
return Ok("test");
}
如何使用HttpClient
调用它?为对象A和B准备适当的查询字符串的最佳方法是什么?
更新
ObjectA
和ObjectB
是复杂的对象......例如
public class ObjectA
{
public string Prop1 { get; set; }
public int Prop2 { get; set; }
public double Prop3 { get; set; }
}
我可以为每个特定情况准备查询字符串,但我有兴趣获得任何允许使用任何对象的通用方法......
现在我只看到一种可能的解决方案 - 使用反射遍历属性列表并构建查询字符串。我假设应该有一些已经实现的机制......我错了吗?
答案 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...
希望这有帮助。