Общий C# API Client Service с общей доходностьюC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Общий C# API Client Service с общей доходностью

Сообщение Anonymous »

У меня есть проект C#, который называет некоторые API. Эти API довольно разные, и ответ отличается почти для каждого вызова. < /P>
Я написал общую службу клиентов: < /p>

Код: Выделить всё

public class HttpClientHelper
{
private readonly IHttpClientFactory _httpClientFactory;

public HttpClientHelper(IHttpClientFactory httpClientFactory)
{
_httpClientFactory = httpClientFactory;
}

public async Task MakeHttpRequestAsync(
string clientName,
string url,
HttpMethod httpMethod,
TRequest requestBody = default,
bool handleErrors = false)
{
// Get a named HttpClient instance
var client = _httpClientFactory.CreateClient(clientName);

var request = new HttpRequestMessage
{
Method = httpMethod,
RequestUri = new Uri(url)
};

// Serialize the request body to JSON (if it exists)
if (requestBody != null)
{
var json = JsonSerializer.Serialize(requestBody);
request.Content = new StringContent(json,
Encoding.UTF8, "application/json");
}

// Send the HTTP request
var response = await client.SendAsync(request);

// Handle errors if specified
if (handleErrors && !response.IsSuccessStatusCode)
{
throw new HttpRequestException($"Failed: {response.StatusCode}");
}

// Deserialize the response JSON into the specified type
var responseJson = await response.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize(responseJson,
new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
}
}
< /code>
Теперь я хочу получить более структурированный возврат из этой функции. Например, мне нравится использовать для всех ответов что -то вроде < /p>
public class ApiResponse where T : class
{
public T? Data { get; set; }
public string? ErrorMessage { get; set; }
public int HttpErrorCode { get; set; } = 200;
public bool Success { get; set; } = false;
}
< /code>
Мне не нужно обрабатывать ошибки в основном коде, и все хорошо управляется в общем клиенте API. Если в вызове есть ошибка, в Apiresponse 
я могу установить успех на false .
Если я напишу этот код:

Код: Выделить всё

public async Task
MakeHttpRequestAsync(
...
)
{
// code
}
Я получаю ошибку

type или имя пространства имен tresponse не может быть найдено (вам не хватает директив или ссылки на сборку?) код.
Есть ли способ реализовать это?

Подробнее здесь: https://stackoverflow.com/questions/795 ... on-returns
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Должен быть одним из: service.start_sticky_compatibility, service.start_sticky, service.start_not_sticky, service.start_
    Гость » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Гость
  • Должен быть одним из: service.start_sticky_compatibility, service.start_sticky, service.start_not_sticky, service.start_
    Гость » » в форуме Android
    0 Ответы
    25 Просмотры
    Последнее сообщение Гость
  • Java Service Wrapper во время запуска JAR Application FOM Service Service
    Anonymous » » в форуме JAVA
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous
  • Pytest тесты с доходностью
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Pytest тесты с доходностью
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»