2012-12-20 20 views
9

İç içe geçmiş bir nesneyle bir nesneyi ASP.NET Web API GET yöntemime iletmek için kullanılan URL sözdizimi nedir? Mümkün mü? http://mydomain/mycontroller?...Yuvalanmış bir karmaşık tür geçirme için REST URL sözdizimi nedir?

Mycontroller GET yöntemi:

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

C# tipleri:

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

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

Bu ilginç ilişkili tartışma benziyor: http://stackoverflow.com/questions/7104578/rest-complex-composite-nested -resources – JayC

cevap

9

mümkündür - bu biçimde URL'yi geçen deneyin:

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

Teşekkürler Maggie, cevabınız mükemmel. –

+0

MyType'ın şu özelliğe sahip olduğu durumda benzer bir şey yapmaya çalıştığınızda ne olur? Public IEnumerable Foos {get; set; } '?? : O sadece denedim ve querystring ne koymak anlayamıyorum :(Basit türleri koleksiyonları vardı karmaşık türleri için bunu daha önce yaptım ('? MyType.MyString = firstElement & MyType.MyString = secondElement'), ama Diğer karmaşık türlerden koleksiyonları olan asla karmaşık olmayan türler! :( –

+0

Woah. Sadece cevabınızı burada buldum: http://stackoverflow.com/a/13963155/326110 Siz rock! –

0

aşağıdaki gerçekleştiren bir get uygulamak çalışıyorsanız:) 1) adıyla 2 almak Foer.Bar

Daha sonra querystring parametrelerini kullanabilirsiniz. REST pass multiple inputs to GET method

Gerçekten bir GET yapmayı denemiyorsanız ve bunun yerine POST verilerini sunucuya yapmaya çalışıyorsanız, bir POST kullanmalısınız.

+0

Lee özel olarak kendi sorgusunda GET'den bahsederken, sorunun özü, HTTP fiili ne olursa olsun teknik olarak geçerlidir. Kontrolcüsünün Post() yöntemini tartışıyor olsaydık ve URI'de iletilen parametreleri kabul etmek istediğinde (ya da ihtiyaç duyulduğunda), durum aynı olurdu. "Sadece POST kullan" deyince, etrafındaki etek kadar soruya cevap vermiyor. –

İlgili konular