【问题标题】:What's the REST URL syntax for passing a nested complex type?传递嵌套复杂类型的 REST URL 语法是什么?
【发布时间】:2012-12-08 11:39:08
【问题描述】:

将带有嵌套对象的对象传递给我的 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; }
}

【问题讨论】:

标签: c# url rest asp.net-web-api


【解决方案1】:

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

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

【讨论】:

  • 谢谢玛吉,你的回答很完美。
  • 当您尝试在MyType 具有以下属性的情况下执行类似操作时会发生什么情况:public IEnumerable<NestedType> Foos { get; set; }? :OI 刚刚尝试过,但不知道在查询字符串中放入什么 :( 我之前已经为具有简单类型集合 (?MyType.MyString=firstElement&MyType.MyString=secondElement) 的复杂类型做过此操作,但从来没有包含其他复杂类型集合的复杂类型类型!:(
  • 哇。我刚刚在这里找到了你的答案:stackoverflow.com/a/13963155/326110 You rock!
【解决方案2】:

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

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

如果您不是真正尝试执行 GET,而是尝试将数据 POST 到服务器,那么您应该使用 POST。

【讨论】:

  • 虽然 Lee 在他的问题中特别提到了 GET,但无论 HTTP 动词如何,问题的精神在技术上都适用。如果我们正在讨论他的控制器的 Post() 方法,并且他想要(或需要)接受在 URI 中传递的参数,情况将是相同的。说“只使用 POST”并不能回答问题,而是绕过它。
猜你喜欢
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 2012-09-06
  • 2011-06-07
  • 2017-08-17
相关资源
最近更新 更多