Я хочу установить заголовок по умолчанию для каждого метода в UserHttpClient, но я не хочу, чтобы каждый метод делал это, я хочу сделать это в общем виде.Установите заголовок по умолчанию для каждого клиентского вызова http
Проблема, которую я вижу в текущей реализации, заключается в том, что когда я вызываю один метод, _client получает расположение таким образом при следующем вызове в запросе Http, _client не инициализируется, так как это происходит внутри конструктора.
UserHttpClient зарегистрирован через DI согласно запросу Http.
Я также не хочу создавать частный/базовый метод, где передаю _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. Это кажется лучшим для меня для проводки DI для каждого запроса HTTP, выполняющего вызов UserHttp. – Pascal