将自定义路由映射到嵌套对象属性

时间:2012-09-17 19:28:47

标签: c# servicestack

鉴于以下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; }

1 个答案:

答案 0 :(得分:1)

您无法映射到路径中的嵌套属性。对于一般服务API设计,您应该尽可能保持您的DTO平坦,因为它更容易被客户访问。

虽然ServiceStack允许您使用JSV Format通过QueryString发送复杂类型(即没有引号的JSON)。

所以你可以这样做:

Routes.Add<Bar>("/bar");

能够通过以下方式致电您的服务:

/bar?Test={Foo:foo,Bar:bar}

有关Routing in ServiceStack的详细信息,请参阅此答案。