はじめに
- 「REST API」をC#から操作するためのライブラリです。
- 「Blazor WebAssembly」では、HttpClient・HttpClientFactoryでそのまま開発もできますけど、今回は、「RestSharp」を使用します。
- HttpClientFactoryについては、こちらの記事を確認いただけたらと思います。
RestSharp
注意!!
v107以降で記述方法が大分変更となっています。
現在は、V108です。
開発環境
- Visual Studio 2022 (C#)
- MudBlazor 6.0.9
- MudBlazor/Template
- RestSharp v108
プロジェクト作成
- 前回の「BlazorでApexChartsを使ってみる」で作成したプロジェクトを使用します。
RestSharpの適用
-
.Clientを右クリックして、Nugetパッケージの管理 を選択
- RestSharpと入力、その際、プレリリースを含めるのチェックボックスはオフにする。
- 変更のプレビューは、とりあえずOK
- Program.csにRestSharpを追加
- Blazorの場合は、AddSingletonの記述が必要のようです。
Program.cs
using ApexChartsSample.Client;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using MudBlazor.Services;
+ using RestSharp;
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddMudServices();
+ builder.Services.AddSingleton(new RestClient(new HttpClient()));
await builder.Build().RunAsync();
- 一旦、デモページのデータでRestSharpを使用するにあたって、事前設定
-
@using RestSharp
と@inject RestClient _restClient;
を追加します。 -
@inject HttpClient Http
は、逆に不要となるので削除します。 -
@inject NavigationManager _navigationManager
を追加します。
-
FetchData.razor
@page "/fetchdata"
- @inject HttpClient Http
@using ApexChartsSample.Shared
+ @using RestSharp
+ @inject RestClient _restClient
+ @inject NavigationManager _navigationManager
<PageTitle>Weather forecast</PageTitle>
- RestSharpは、アドレスがフルパスが必要となるので、
NavigationManager
を使って、BaseUriを取得します。
FetchData.razor
@code {
private WeatherForecast[]? forecasts;
~~省略~~
protected override async Task OnInitializedAsync()
{
- //forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("WeatherForecast");
+ var url = _navigationManager.BaseUri + "WeatherForecast";
+ forecasts = await _restClient.GetJsonAsync<WeatherForecast[]>(url);
~~省略~~
}
}
- HttpClientからRestSharpの取得へ変更した部分が無事、データ取得できるようになりました。
補足
- 上のままでは、あまり「使ってみる」って感じでもないので、別投稿で具体的なGetとPostの例を記載するようにします。