如何在ServiceStack中传递复杂类型列表?例如,我的Request DTO看起来像这样:
//Request DTO
public class Test
{
public IList<Fund> Funds { get; set; }
}
public class Fund
{
public string Key { get; set; }
public int Percent { get; set; }
}
如何通过HTTP get传递序列化对象?
http://localhost:49490/api/funds={ ?? }
KeyValueDataContractDeserializer:转换为类型时出错:类型定义应以“{”开头,期待序列化类型“基金”,字符串开头为:asdf
答案 0 :(得分:10)
ServiceStack使用JSV Format解析queryString这基本上是带有CSV样式引号的JSON(即当你的值有一个转义字符时只需要引号)。
虽然您尚未在此处定义自定义路线,但在大多数情况下,您的自定义路线与您的请求DTO相同,在这种情况下测试而不是 / funds
因此,假设自定义路线如下:
Routes.Add<Test>("/test");
您可以通过QueryString调用您的服务,如:
的http://本地主机:49490 / API /测试基金= [{键:密钥1,百分比:1},{键:密钥2,百分比:2}]
侧面说明DTO上的接口通常是一个坏主意,您应该考虑在任何时候避免(至少限制)它的使用。