鉴于以下DTO:
[DataContract]
public class Foo
{
[DataMember]
public string Boo { get; set; }
[DataMember]
public string Far { get; set; }
}
[DataContract]
public class Bar
{
[DataMember]
public Foo Test { get; set; }
// other members
}
我想添加一条路线:
Add<Bar>("/...(other members).../{Test.Boo}/{Test.Far}/
这可能吗?如果是这样,如果
,情况会如何变化[DataMember]
public Foo Test { get; set; }
更改为:
[DataMember]
public Foo[] Test { get; set; }
答案 0 :(得分:1)
您无法映射到路径中的嵌套属性。对于一般服务API设计,您应该尽可能保持您的DTO平坦,因为它更容易被客户访问。
虽然ServiceStack允许您使用JSV Format通过QueryString发送复杂类型(即没有引号的JSON)。
所以你可以这样做:
Routes.Add<Bar>("/bar");
能够通过以下方式致电您的服务:
/bar?Test={Foo:foo,Bar:bar}
有关Routing in ServiceStack的详细信息,请参阅此答案。