すべての ServiceStack /metadata ページには、クライアントが特定の Content-Type を要求できるさまざまな方法がリストされています。
クライアントの HTTP AcceptヘッダーでContent-type をオーバーライドするには、 ?format=xmlを追加するか、または を追加します。フォーマット拡張子
たとえば、クライアントは?format=x-my-content-typeを使用してカスタム ContentType を指定し、拡張子を追加する.x-my-content-type
か、(HttpClient で) HTTP ヘッダーを指定することによって指定できます。
Accept: application/x-my-content-type
それ以外の場合、HttpClient が Accept ヘッダーを送信しない場合は、AppHost で既定のコンテンツ タイプを次のように指定できます。
SetConfig(new HostConfig {
DefaultContentType = "application/x-my-content-type"
});
注: ServiceStack のすべての構成オプションは on に設定されていHostConfig
ます。
Web ブラウザーから Web サービスを呼び出す場合の問題は、サービスAccept: text/html
スタックが HTML が有効になっている場合に HTML を返すことを契約によって要求することが一般的であることです。
Content-Type が常に返されるようにするには、次の方法で HTML 機能を無効にすることもできます。
SetConfig(new HostConfig {
EnableFeatures = Feature.All.Remove(Feature.Html),
});
それ以外の場合は、Acceptヘッダーをオーバーライドする場合は、HttpResult 内で Response DTO を装飾することにより、サービスが常に Content-Type を返すように強制できます。つまり、次のようになります。
return new HttpResult(dto, "application/x-my-content-type");
それ以外の場合は、サービスの外部 (リクエスト/レスポンス フィルタなど) のどこにでも、次のようにアクセスできる場所ならどこでもレスポンスの ContentType を設定できますIHttpRequest
。
httpReq.ResponseContentType = "application/x-my-content-type";