2012-12-20 7 views
9

Jaka jest składnia adresu URL, aby przekazać obiekt z zagnieżdżonym obiektem do mojej metody ASP.NET Web API GET? czy to możliwe? http://mydomain/mycontroller?...Jaka jest składnia adresu URL REST do przekazywania zagnieżdżonego typu złożonego?

MyController metoda GET:

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

C# typy:

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

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

To wygląda ciekawie powiązanej dyskusji: http://stackoverflow.com/questions/7104578/rest-complex-composite-nested -resources – JayC

Odpowiedz

9

Jest to możliwe - spróbuj przechodząc URL w następującym formacie:

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

Dzięki Maggie, twoja odpowiedź jest idealna. –

+0

Co się dzieje, gdy próbujesz zrobić coś podobnego w przypadku, gdy 'MyType' ma następującą właściwość:' public IEnumerable Foos {get; zestaw; } '?? : OI właśnie tego wypróbował i nie może dowiedzieć się, co należy umieścić w querystringu :(Robiłem to już wcześniej dla złożonych typów, które miały kolekcje prostych typów ('? MyType.MyString = firstElement & MyType.MyString = secondElement'), ale nigdy skomplikowane typy, które miały kolekcje innych złożonych typów! :( –

+0

Woah, właśnie znalazłem twoją odpowiedź tutaj: http://stackoverflow.com/a/13963155/326110 Ty kołyszesz! –

0

Jeśli próbujesz zaimplementować GET, który wykonuje następujące czynności: 1) dostać wg nazwy 2) pobierz przez Foo.Bar

Następnie możesz użyć parametrów zapytania. REST pass multiple inputs to GET method

Jeśli tak naprawdę nie próbujesz wykonać GET, a zamiast tego próbujesz wysłać dane POST na serwer, powinieneś użyć POST.

+0

Podczas gdy Lee wyraźnie wspomina GET w swoim pytaniu, duch pytania technicznie obowiązuje bez względu na czasownik HTTP. Jeśli omawialiśmy metodę Post() jego kontrolera i chciał (lub potrzebował) zaakceptować parametry przekazane w URI, sytuacja byłaby identyczna. Mówienie "po prostu używaj POST" nie odpowiada tak bardzo, jak spódnica wokół niego. –

Powiązane problemy