C# で REST API を呼び出すためのコード例
C# で REST API を呼び出す方法
REST API というのは、インターネット上でアプリケーション同士が通信するための仕組みです。C# で REST API を呼び出すには、主に以下の方法があります。
HttpClient クラス
- .NET 4.5 以降では標準で提供される
HttpClient
クラスが最もシンプルで一般的な方法です。 HttpClient
クラスを使って、HTTP GET、POST、PUT、DELETE などのリクエストを送信することができます。
using System.Net.Http;
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("https://api.example.com/data");
if (response.IsSuccessStatusCode)
{
string content = await response.Content.ReadAsStringAs ync();
// 応答の処理
}
else
{
// エラー処理
}
RestSharp
- RestSharp は、REST API を呼び出すためのサードパーティのライブラリです。
HttpClient
クラスよりも高レベルな抽象化を提供し、より簡単に REST API を呼び出すことができます。
using RestSharp;
var client = new RestClient("https://api.example.com");
var request = new RestRequest("/data", Method.Get);
IRestResponse response = await client.ExecuteAsync(request);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
// 応答の処理
}
else
{
// エラー処理
}
Newtonsoft.Json
- JSON 形式のデータを扱うためのサードパーティのライブラリです。
- REST API の応答が JSON 形式の場合、Newtonsoft.Json を使って簡単に解析することができます。
using Newtonsoft.Json;
// ... REST API の呼び出し
string content = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<YourDataType>(content);
注意:
- セキュリティやパフォーマンスを考慮して、適切な方法を選択してください。
- エラー処理や例外処理を適切に行うことが重要です。
using System.Net.Http;
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("https://api.example.com/data");
if (response.IsSuccessStatusCode)
{
string content = await response.Content.ReadAsStringAs ync();
// 応答の処理 (JSON, XML, etc.)
}
else
{
// エラー処理
}
- 解説:
HttpClient
クラスを使用して、GET リクエストを指定された URL に送信します。await
キーワードは、非同期操作を待つために使用されます。IsSuccessStatusCode
プロパティで、リクエストが成功したかどうかを確認します。ReadAsStringAsync
メソッドで、応答のコンテンツを文字列として読み取ります。
using RestSharp;
var client = new RestClient("https://api.example.com");
var request = new RestRequest("/data", Method.Get);
IRestResponse response = await client.ExecuteAsync(request);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
// 応答の処理
}
else
{
// エラー処理
}
- 解説:
RestClient
クラスを使用して、REST API のベース URL を設定します。RestRequest
クラスを使用して、リクエストのメソッド (GET、POST、PUT、DELETE など) とパスを設定します。ExecuteAsync
メソッドで、リクエストを実行し、IRestResponse
オブジェクトを取得します。
Newtonsoft.Json (JSON 形式の応答を解析する場合)
using Newtonsoft.Json;
// ... REST API の呼び出し
string content = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<YourDataType>(content);
- 解説:
DeserializeObject
メソッドを使用して、JSON 文字列を指定された型オブジェクトに変換します。YourDataType
は、応答のデータ構造に対応するクラスです。
ServiceStack
- 高性能で軽量なフレームワークで、REST API の呼び出しだけでなく、他の機能も提供します。
- JSON、XML、SOAP、Protobuf などのフォーマットに対応しています。
using ServiceStack;
var client = new JsonServiceClient("https://api.example.com");
var response = await client.GetAsync<YourDataType>("/data");
Refit
- 自動生成されたインターフェイスを使用して、REST API を呼び出すためのシンプルで強力なライブラリです。
- 強く型付けされたクライアントを作成できるため、コードの可読性とメンテナンス性が向上します。
using Refit;
public interface IMyApi
{
[Get("/data")]
Task<YourDataType> GetDataAsync();
}
var client = RestService.For<IMyApi>("https://api.example.com");
var data = await client.GetDataAsync();
Polly
- リトライ、タイムアウト、回路遮断などのエラー処理機能を提供するライブラリです。
- REST API の呼び出しにおいて、エラーが発生した場合のリカバリー戦略を実装できます。
using Polly;
using System.Net.Http;
var retryPolicy = Policy.Handle<HttpRequestException>()
.WaitAndRetryAsync(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAtt empt)));
var client = new HttpClient();
var response = await retryPolicy.ExecuteAsync(() => client.GetAsync("https://api.example.com/data"));
ASP.NET Web API (サーバーサイドでの実装)
- ASP.NET Web API を使用して、独自の REST API を作成することもできます。
- クライアント側では、上記の方法を使用して、作成した REST API を呼び出すことができます。
これらの代替方法の選択基準は、以下のような要素によって異なります:
- プロジェクトの要件: 必要な機能やパフォーマンス要件を満たす方法を選択してください。
- チームのスキル: チームのメンバーがどの方法に精通しているか考慮してください。
- プロジェクトの規模: プロジェクトの規模に応じて、適切な方法を選択してください。
c# .net rest