UserHttpClientの各メソッドにデフォルトのヘッダーを設定したいが、すべてのメソッドがそれをやりたいとは思っていない。一般的なやり方でやりたい。各httpクライアントコールにデフォルトヘッダーを設定する
私が現在の実装で見られる問題は、1つのメソッドを呼び出すと、_clientがHttp要求内の次の呼び出し時にこのように配置され、_clientが初期化されていないことです。
UserHttpClientは、HTTPリクエストに従ってDI経由で登録されます。
私は_clientを渡してヘッダーを追加するプライベート/ベースメソッドを作成したくありません。
どのように問題を解決しますか?
public class UserHttpClient : IUserRemoteRepository
{
private readonly string baseUrl = ConfigurationManager.AppSettings["baseUrl"];
private readonly string header = ConfigurationManager.AppSettings["userHeader"];
private readonly HttpClient _client;
public ServiceProductDataProvider(string toolSystemKeyHeader)
{
_client = new HttpClient();
_client.DefaultRequestHeaders.Add(header, token);
}
public async Task<List<UserDto>> GetUsers(UserRequestDto dto)
{
using (_client)
{
// do stuff
var users = await _client.GetAsync("url here");
}
}
public async Task<UserDto> GetUser(Guid userId)
{
using (_client)
{
// do stuff
var users = await _client.GetAsync("url here");
}
}
}
あなたのポストを見る前にちょうど私がやった!まだありがとう!しかし、使用すると、私はエラーの場合にクライアントが処分されることを確かめることができますが、それを保証しない人は私にそれを保証しますか? – Pascal
おそらくDIフレームワーク。しかし、あなたはそのドキュメントから見つける必要があります。 – user1429080
私は現在HttpClientから継承しています。それはUserHttp呼び出しを行うhttp要求ごとのDI配線アップのために私にとって最善のようです。 – Pascal