问题 传递嵌套复杂类型的REST URL语法是什么?


将带有嵌套对象的对象传递给ASP.NET Web API GET方法的URL语法是什么?这可能吗? http://mydomain/mycontroller?...

Mycontroller GET方法:

 public void Get([FromUri]MyType myType) { ... }

C#类型:

public class MyType
{
  public string Name { get; set; }
  public NestedType Foo { get; set; }
}

public class NestedType
{
  public int Bar { get; set; }
}

1612
2017-12-20 21:35


起源

这看起来像一个有趣的相关讨论: stackoverflow.com/questions/7104578/... - JayC


答案:


有可能 - 尝试以这种格式传递URL:

?myType.Foo.Bar=3&myType.Name=Maggie

12
2017-12-20 22:18



谢谢Maggie,你的答案是完美的。 - Lee Grissom
当你尝试做类似的事情时会发生什么 MyType 具有以下属性: public IEnumerable<NestedType> Foos { get; set; } ?? :O我只是尝试了它并且无法弄清楚要放入查询字符串的内容:(之前我已经为具有简单类型集合的复杂类型做了这个(?MyType.MyString=firstElement&MyType.MyString=secondElement),但从来没有具有其他复杂类型集合的复杂类型! :( - mo.
哇。我刚刚在这里找到你的答案: stackoverflow.com/a/13963155/326110  你摇滚! - mo.


如果您正在尝试实现执行以下操作的get: 1)按名称获取 2)得到Foo.Bar

然后你可以使用查询字符串参数。 REST将多个输入传递给GET方法

如果你真的没有尝试进行GET而是尝试将数据发送到服务器,那么你应该使用POST。


1
2017-12-20 21:46



虽然李在他的问题中特别提到了GET,但无论HTTP动词如何,这个问题的精神在技术上都适用。如果我们讨论他的控制器的Post()方法,并且他希望(或者需要)接受在URI中传递的参数,那么情况就是相同的。说“只是使用POST”并没有像围绕它那样回答这个问题。 - mo.