我刚刚开始使用ServiceStack这是一个了不起的库.
但是,我有一个业务需求,我们必须返回xml和json,其中xml必须是特定格式.
例如,我们现有的客户期望xml的格式:
<service name="service1" type="audio" .../>
Run Code Online (Sandbox Code Playgroud)
所以基本上是一堆属性.
我知道ServiceStack使用DTO的概念并使用DataContractSerializer返回xml元素而不是上面的表单中的xml属性.
我仍然希望将DTO用于请求(在Accept头中传入application/xml或application/json)然后我可以创建自己的xml字符串或json字符串,然后将它们返回为:
string result = "....xml or json string...";
return new MemoryStream(Encoding.UTF8.GetBytes(result));
Run Code Online (Sandbox Code Playgroud)
其中结果字符串可以是xml字符串或json字符串.
我在fiddler中注意到Content-Type的响应为text/html.
根据我使用的方法,我违反了任何REST原则吗?Content-Type是否会出现问题(text/html)?
如果我使用这种方法,它确实解决了业务需求.
编辑
我发现我可以返回一个httpResult:
return new HttpResult(
new MemoryStream(Encoding.UTF8.GetBytes(result)), "application/xml");
Run Code Online (Sandbox Code Playgroud)
它给出了正确的内容类型.
那么,这是正确的方式,还是如果我沿着这条路走下去,我会遇到什么问题?
我使用servicestack的新API从其他服务方法之一返回HttpResult.有没有办法使用JsonServiceClient获取HttpResult?
例如: JSonServiceClient.Send<HttpResult>("DELETE","person", new { PersonID = 30 });
我想检查httpresult的头信息.
谢谢.
servicestack ×2