A classe FormAnswerService é usada para gerenciar o processo de recuperação de dados do domínio FormAnswer. Nométodo RegisterAppServices daclasse MauiProgram , aclasse FormAnswerService é registrada como um mapeamento de tipo em relação aotipo IFormAnswerService com o contêiner de injeção de dependência. Então, quando uma instância daclasse FormAnswerViewModel é criada, seu construtor aceita um tipo IFormAnswerService , que o contêiner de injeção de dependência resolve, retornando uma instância da classe FormAnswerService . A imagem abaixo mostra a interação de classes que leem dados do domínio FormAnswer. Image Modified O ViewModel chama ométodo GetFormAnswers dainstância FormAnswerService que foi injetada no ViewModelpelo contêiner de injeção de dependência. O exemplo de código a seguir mostra ométodo GetFormAnswers : Bloco de código |
---|
language | c# |
---|
theme | RDark |
---|
title | C# |
---|
| public async Task<RMSApiListagem<FormResposta>> GetFormAnswers(FormParamsApiClass paramApi)
{
string paramsFixed = SyncParamsHelper.GetSyncParams(paramApi, 1);
if (paramApi.Status.HasValue)
{
string condStatus = paramApi.IgnoreStatus ? "ne" : "eq";
paramsFixed += (paramsFixed.Contains("$filter") ? " and " : (string.IsNullOrEmpty(paramsFixed) ? string.Empty : "&") + "$filter=") +
$"statusId {condStatus} {(int)paramApi.Status.Value}";
}
string apiResource = $"{ApiUrlBase}formanswers" + (string.IsNullOrEmpty(paramsFixed) ? string.Empty : $"?{paramsFixed}");
return await _requestProvider.GetAsync<RMSApiListagem<FormResposta>>(apiResource);
} |
Clique para acessar o arquivo Esse método cria o URI que identifica o recurso para o qual a solicitação será enviada e usa aclasse RequestProvider para invocar o método GET HTTP no recurso, antes de retornar os resultados para o ViewModel . Aclasse RequestProvider contém a funcionalidade que envia uma solicitação na forma de um URI que identifica um recurso, um método HTTP que indica a operação a ser executada nesse recurso e um corpo que contém todos os dados necessários para executar a operação. O exemplo de código a seguir mostra ométodo GetAsync naclasse RequestProvider : Bloco de código |
---|
language | c# |
---|
theme | RDark |
---|
title | C# |
---|
| public async Task<TResult> GetAsync<TResult>(string uri, string token = "")
{
HttpClient httpClient = GetOrCreateHttpClient(token);
HttpResponseMessage response = await httpClient.GetAsync(uri).ConfigureAwait(false);
await HandleResponse(response).ConfigureAwait(false);
TResult result = await response.Content.ReadFromJsonAsync<TResult>();
return result;
} |
Clique para acessar o arquivo Esse método chama ométodo GetOrCreateHttpClient , que retorna uma instância daclasse HttpClient com os cabeçalhos apropriados definidos. Em seguida, ele envia umasolicitação GET assíncrona ao recurso identificado pelo URI, com a resposta sendo armazenada nainstância HttpResponseMessage . Ométodo HandleResponse é invocado, o que lança uma exceção se a resposta não incluir um código de status HTTP de sucesso. Em seguida, a resposta é lida como uma string, convertida de JSON para umobjeto RMSApiListagem e retornada ao FormAnswerService . |