ServiceStack i zwrot strumienia
Właśnie zacząłem używać ServiceStack, który jest niesamowitą biblioteką.
Mam jednak wymóg biznesowy, w którym musimy zwrócić xml i json, gdzie xml musi mieć określony format.
Na przykład mamy istniejących klientów, którzy oczekują formatu xml:
<code><service name="service1" type="audio" .../> </code>
tak w zasadzie kilka atrybutów.
Wiem, że ServiceStack używa pojęć DTO i używa DataContractSerializer, który zwraca elementy xml zamiast w powyższej formie z atrybutami xml.
Nadal chcę używać DTO dla żądań (przechodzących w application / xml lub application / json w nagłówku Accept) i mogę następnie utworzyć własne ciągi xml lub łańcuchy json, a następnie zwrócić je jako:
<code>string result = "....xml or json string..."; return new MemoryStream(Encoding.UTF8.GetBytes(result)); </code>
gdzie ciąg wynikowy może być ciągiem XML lub ciągiem json.
W skrzypcach zauważyłem odpowiedź Content-Type jako text / html.
Z podejściem, którego używam, czy naruszam zasady REST? Czy będą problemy z Content-Type, tak jak obecnie (text / html)?
Jeśli zastosuję to podejście, rozwiązuje to wymagania biznesowe.
Edytować
Odkryłem, że mogę zwrócić httpResult jako:
<code>return new HttpResult( new MemoryStream(Encoding.UTF8.GetBytes(result)), "application/xml"); </code>
co daje prawidłowy typ treści.
Czy jest to właściwy sposób, czy będę miał problemy, jeśli pójdę tą drogą?