2

给定以下 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; }

?

4

1 回答 1

1

您不能映射到路由中的嵌套属性。对于通用服务 API 设计,您的目标应该是尽可能保持 DTO 平坦,因为它更容易被客户访问。

尽管 ServiceStack 允许您使用JSV 格式(即不带引号的 JSON)通过 QueryString 发送复杂类型。

所以你可以这样做:

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

并且能够通过以下方式调用您的服务:

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

有关ServiceStack 中路由的更多详细信息,请参阅此答案。

于 2012-09-17T21:29:27.357 回答