すばらしいライブラリであるServiceStackを使い始めたところです。
ただし、xmlとjsonを返す必要があるというビジネス要件があります。xmlは特定の形式である必要があります。
たとえば、次の形式のxmlを期待する既存の顧客がいます。
<service name="service1" type="audio" .../>
つまり、基本的には一連の属性です。
ServiceStackはDTOの概念を使用し、上記のxml属性の形式ではなくxml要素を返すDataContractSerializerを使用していることを知っています。
リクエストにDTOを使用したいので(Acceptヘッダーでapplication/xmlまたはapplication/jsonを渡す)、独自のxml文字列またはjson文字列を作成して、次のように返すことができます。
string result = "....xml or json string...";
return new MemoryStream(Encoding.UTF8.GetBytes(result));
ここで、結果の文字列はxml文字列またはjson文字列になります。
私はフィドラーで応答Content-Typeがtext/htmlであることに気づきました。
私が使用しているアプローチでは、RESTの原則に違反していますか?現在のContent-Type(text / html)に問題はありますか?
私がこのアプローチを使用する場合、それはビジネス要件を解決します。
編集
httpResultを次のように返すことができることがわかりました:
return new HttpResult(
new MemoryStream(Encoding.UTF8.GetBytes(result)), "application/xml");
これにより、正しいコンテンツタイプが得られます。
それで、これは正しい方法ですか、それともこのルートをたどると問題が発生しますか?