2012-12-20 93 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」並不像回答這個問題那樣回答這個問題。 –