WCFを使用していると思います。XMLまたはJSONの結果から選択できる簡単な方法がいくつかあります。1つは異なるエンドポイントを持つことであり、もう1つは異なるメソッドを持つことです。2番目のオプションは、API呼び出しにパラメーターを含めるという要求に対応しますが、両方について簡単に説明します。以下のエンドポイントを検討してください。
<endpoint address="/rest/" behaviorConfiguration="web" binding="webHttpBinding" contract="WebApplication1.Interface.ITestRest" />
<endpoint address="/json/" behaviorConfiguration="web" binding="webHttpBinding" contract="WebApplication1.Interface.ITestJson" />
<endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" contract="WebApplication1.Interface.ITestBoth" />
最初の2つは、エンドポイントで区別するためのオプション1に関連しています(/rest/または/json/のいずれかがメソッドの前のURLに含まれ、両方のインターフェイスで同じ署名を定義できるため、一度だけ実装できます)。最後の1つは、オプション2に関連しており、インターフェイスに2つのメソッドがあります。上記のインターフェースのサンプルセットを次に示します。
[ServiceContract]
public interface ITestJson
{
[OperationContract, WebInvoke(Method = "GET", UriTemplate = "/Echo/{Text}",
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string Echo(string Text);
}
[ServiceContract]
public interface ITestRest
{
[OperationContract, WebInvoke(Method = "GET", UriTemplate = "/Echo/{Text}",
RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
string Echo(string Text);
}
[ServiceContract]
public interface ITestBoth
{
[OperationContract, WebInvoke(Method = "GET", UriTemplate = "/Echo?Text={Text}&Format=json",
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string EchoJ(string Text);
[OperationContract, WebInvoke(Method = "GET", UriTemplate = "/Echo?Text={Text}&Format=xml",
RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
string EchoR(string Text);
}
次に、これを実装するクラス:
public class Signature : ITestJson, ITestRest, ITestBoth
{
public string Echo(string Text)
{
return Text;
}
public string EchoR(string Text)
{
return Text;
}
public string EchoJ(string Text)
{
return Text;
}
これで、これを次の方法で使用できます。
Service1.svc/json/echo/xxx
Service1.svc/rest/echo/xxx
Service1.svc/echo?Text=xxx&Format=json
Service1.svc/echo?Text=xxx&Format=rest
冒頭で述べたように、これらはXMLまたはJsonを選択するためのいくつかの簡単な方法です。あなたのリクエストはCSVも要求しました。現在、CSVを返す簡単な方法はありません。TXTを返すことができるCodePlexでこのプロジェクトを見つけましたが、チェックアウトしていません。