使用Angular Resource将复杂类型发送到ServiceStack

时间:2016-03-01 15:34:48

标签: angularjs json servicestack deserialization angular-resource

所以我想将一些带有Angular Resource的复杂类型发送到我的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正确反序列化。如果我在发布请求中发送数据,它可以正常工作。我已经发现ServiceStack在这种情况下使用JSV格式。是否有可能使这个工作或我必须使用post或编写我自己的Deserializer?

谢谢!

1 个答案:

答案 0 :(得分:0)

通过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方式。

相关问题