我刚刚开始使用 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 字符串。
我在提琴手中注意到响应内容类型为文本/html。
使用我使用的方法,我是否违反了任何 REST 原则?当前的 Content-Type (text/html) 会有问题吗?
如果我确实使用这种方法,它确实可以解决业务需求。
编辑
我发现我可以将 httpResult 返回为:
return new HttpResult(
new MemoryStream(Encoding.UTF8.GetBytes(result)), "application/xml");
这给出了正确的内容类型。
那么,这是正确的方法还是如果我走这条路我会遇到问题?