将具有 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。
所以我想将一些带有 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。