将具有 Angular 资源的复杂类型发送到 ServiceStack

Send complex types with Angular Resource to ServiceStack

所以我想将一些带有 Angular 资源的复杂类型发送到我的 ServiceStack 后端。在前端看起来像这样:

MyResource.get({
    Data: { countries: ["DE","CH","AT"] }
    SomeMoreParams: "hi"
});

这是我的 DTO:

[Route("/my-resource","GET")]
public class MyResource
{
    public OwnType Data { get; set; }
    public string SomeMoreData { get; set; }
}

public class OwnType
{
    public List<string> Countries { get; set; }
}

但它没有被 ServiceStack 正确反序列化。如果我在 post 请求中发送数据,它会正常工作。我已经发现 ServiceStack 在这种情况下使用 JSV 格式。有没有可能让它工作或者我必须使用 post 或编写我自己的反序列化器?

谢谢!

没有用于通过 QueryString 发送复杂类型的正式结构,因此我们建议保持您的 Request DTO 平坦,以便可以轻松访问它们。因此,我会在您的请求 DTO 中将国家/地区移动到第一级 属性:

[Route("/my-resource","GET")]
public class MyResource
{
    public List<string> Countries { get; set; }
    public string SomeMoreData { get; set; }
}

您现在应该可以访问:

MyResource.get({
    countries: "DE,CH,AT"
    SomeMoreParams: "hi"
});

如果您想在 Request DTO 上保留复杂类型,最简单的方法是 send a complex type Request is to use POST