根据Servicestack中的查询字符串参数值返回不同的ResponseDTO?

时间:2015-10-06 09:52:44

标签: servicestack

我希望根据QueryString parameter值返回不同类型的响应。实施例

http://localhost:8080/myservice?Type=low --> return responseType1
http://localhost:8080/myservice?Type=high --> return responseType2

根据URL中的Type值,我想要在服务中使用不同类型的响应。

1 个答案:

答案 0 :(得分:2)

强烈建议不要根据您调用服务的方式更改返回类型。您的客户端绑定到您的服务的响应 - 根据一些运行时启发式不加选择地更改它将打破它们。

但是,如果必须,ServiceStack服务不会强制执行严格的响应类型,并允许您返回任何object,例如:

public object Any(Request request)
{
    return request.Type == "low"
       ? responseType1
       : responseType2;
}

这确实意味着请求DTO不再具有一致的IReturn<Response>接口标记,并且您现在会强制客户端知道返回哪个响应以及何时需要维护它们他们自己在呼叫现场,例如:

var response = client.Get<ResponseType>(new Request { Type = "low" });

这也会影响元数据服务,这些服务不能依赖服务来获得一致的响应类型。