1
resposta

ApiClient genérico

Boa tarde! Estou com uma dúvida, vou usar como exemplo a classe LivroApiClient.cs, nela utilizamos o modelo LivroApi para receber os dados da API.

Imagine se tivessemos um projeto na qual teremos vários modelos que irão consumir os dados de uma API. Se seguirmos a lógica do projeto Alura.WebAPI, teremos criar uma classe ApiClient para cada modelo, exemplo AutorApiClient, EditoraApiClient, etc.

É possível utilizar apenas uma classe ApiClient genérica para vários modelos? Neste caso, fazendo a conversão dos dados consumidos para o modelo desejado.

Exemplo: return await resposta.Content.ReadAsAsync

1 resposta

Olá Henrique, sim isso é possivel, voce pode separar o projeto em diferentes camadas e ao chegar na camada de persistencia, voce pode levar um seletor(tipo), onde antes do seu commit ou dentro da sua procedure, voce pode verificar qual o tipo esta chegando e retornar o dado correto.. Claro, a sua interface que ira representar o retorno desse tipo de dado, devera refletir os dados que voce quer retornados. ao criar a interface com os metodos de entrada, basta colocar algo como:

public Task<T> BuscarDados<T>(EnumTipoDado tipoDado)

e na sua implementação algo como:

public async Task<DadoResponse> BuscarDados(EnumTipoDado tipoDado)
{
        <aqui pode ser utilizado qualquer coisa, como o Dapper para fazer essa tarefa por exemplo>

        return await ........<DadoResponse>(tipoDado)
}

Espero ter ajudado.