2012-12-20 61 views
9

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

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; } 
} 
+0

这看起来像一个有趣的相关讨论:http://stackoverflow.com/questions/7104578/rest-complex-composite-nested资源 – JayC

回答

9

这是可能的 - 试图传递的URL格式为:

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

谢谢Maggie,你的回答是完美的。 –

+0

当您在'MyType'具有以下属性的情况下尝试做类似的事情时会发生什么:'public IEnumerable Foos {get;组; }'? :OI只是试了一下,无法弄清楚要在查询字符串中放置什么:(我之前为具有简单类型集合的复杂类型('?MyType.MyString = firstElement&MyType.MyString = secondElement')做了此操作,但从来没有复杂的类型,其他复杂类型的集合!( –

+0

哇!我刚刚在这里找到你的答案:http://stackoverflow.com/a/13963155/326110你摇滚! –

0

如果你想实现执行以下的获取: 1)名称 2获得)得到Foo.Bar

然后你可以使用查询字符串参数。 REST pass multiple inputs to GET method

如果你不是真的试图做一个GET,而是尝试发送数据到服务器,那么你应该使用POST。

+0

尽管Lee在他的问题中特别提到了GET,但无论HTTP动词如何,这个问题的精神在技术上都适用。如果我们正在讨论他的控制器的Post()方法,并且他希望(或需要)接受URI中传递的参数,则情况将是相同的。说“只用POST”并不像回答这个问题那样回答这个问题。 –