Pollyとは、APIへのアクセス時のリトライの実装などを助けてくれるライブラリです。
Pollyを使えば、APIのアクセス時に問題が発生した場合に、自動的にリトライすることができます。
この記事では、C#でPollyを使った基本的なAPIアクセス方法について説明します。
NuGetを使ってPollyをインストール
いつものようにNuGetパッケージマネージャーから、Pollyをインストールします。
コマンドでインストールする場合は以下のコマンドを実行してください。
Install-Package Polly
HttpClientの作成
APIアクセスにはHttpClientを使用します。
以下のようにHttpClientを生成します。
var httpClient = new HttpClient();
Policyの作成
Pollyを使うためには、Policyを作成する必要があります。
Policyは、リトライや回復の方法を定義するものです。
以下は、リトライの回数を3回に設定するPolicyの作成例です。
var retryPolicy = Policy .Handle<HttpRequestException>() .RetryAsync(3);
APIアクセス
Policyを作成したら、APIにアクセスする準備が整いました。
以下は、Pollyを使ったAPIアクセスの例です。
var result = await retryPolicy.ExecuteAsync(async () => { var response = await httpClient.GetAsync("https://example.com/api/users"); response.EnsureSuccessStatusCode(); return await response.Content.ReadAsStringAsync(); });
この例では、HttpClientを使ってhttps://example.com/api/usersにアクセスしています。
リトライの回数が3回に設定されているため、APIアクセスに失敗した場合には、3回まで自動的にリトライされます。
リトライの条件の指定
Pollyでは、リトライの条件を指定することができます。
以下は、ステータスコードが500番台の場合にリトライするPolicyの作成例です。
var retryPolicy = Policy .Handle<HttpRequestException>() .OrResult<HttpResponseMessage>(r => (int)r.StatusCode >= 500) .RetryAsync(3);
このようにすることで、APIアクセスに失敗した場合に、ステータスコードが500番台の場合にはリトライするように設定することができます。
その他のPolicy
以下の公式ドキュメントを御覧ください。
まとめ
以上が、C#でPollyを使ったAPIアクセス方法の紹介です。
Pollyを使うことで、APIアクセスの際に問題が発生した場合に、自動的にリトライすることができるため、アプリケーションの回復力を高めることができます。