【发布时间】:2012-04-19 21:44:36
【问题描述】:
我刚刚开始使用 ServiceStack,这是一个很棒的库。
但是,我有一个业务需求,我们必须返回 xml 和 json,其中 xml 必须采用特定格式。
例如,我们现有的客户希望使用以下格式的 xml:
<service name="service1" type="audio" .../>
所以基本上是一堆属性。
我知道 ServiceStack 使用 DTO 的概念并使用返回 xml 元素的 DataContractSerializer,而不是上面带有 xml 属性的表单。
我仍然想对请求使用 DTO(在 Accept 标头中传入 application/xml 或 application/json),然后我可以创建自己的 xml 字符串或 json 字符串,然后将它们返回为:
string result = "....xml or json string...";
return new MemoryStream(Encoding.UTF8.GetBytes(result));
结果字符串可以是 xml 字符串或 json 字符串。
我在 fiddler 中注意到响应 Content-Type 为 text/html。
我使用的方法是否违反了任何 REST 原则?当前的 Content-Type (text/html) 会有问题吗?
如果我确实使用这种方法,它确实可以解决业务需求。
编辑
我发现我可以将 httpResult 返回为:
return new HttpResult(
new MemoryStream(Encoding.UTF8.GetBytes(result)), "application/xml");
它给出了正确的内容类型。
那么,这是正确的方式吗?如果我沿着这条路走,我会遇到问题吗?
【问题讨论】:
标签: servicestack