Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] Dúvida sobre retorno de response C#

Dúvida sobre retorno de response.

No arquivo ViaCepIntegration eu uso ViaCepResponse que é um modelo de resposta, no qual é exatamente igual ao content, por isso retorno apenas o responseDAta.content, mas eu queria retornar o responseData todo, para eu poder tratar algumas respostas como 400, 404 etc... como posso fazer isso ?

No link abaixo tem o arquivo de refit, https://pastebin.com/F1GGDCMi o ViaCepREsponse https://pastebin.com/hCsXeWLz ViaCepIntegration https://pastebin.com/VPYTfL1P IViaCepIntegration https://pastebin.com/pK8faGMu link do arquivo do controller: https://pastebin.com/Wn4iB3dk

link do repositório

https://github.com/raphaelluiz128/webapi

4 respostas
solução!

Olá, Raphael!

Pelo que entendi, você está querendo retornar o objeto completo responseData no lugar de apenas responseDAta.content, correto? Para fazer isso, você pode modificar o retorno do método GetCepAsync no arquivo ViaCepIntegration.cs.

Atualmente, você está retornando apenas responseDAta.content, que é uma string com o conteúdo da resposta. Para retornar o objeto completo responseData, você precisa alterar o tipo de retorno do método para Task<ViaCepResponse> e retornar responseData ao invés de responseDAta.content. Ficaria assim:

public async Task<ViaCepResponse> GetCepAsync(string cep)
{
    var response = await _viaCepApi.GetCepAsync(cep);

    if (response.IsSuccessStatusCode)
    {
        var content = await response.Content.ReadAsStringAsync();
        var responseData = JsonConvert.DeserializeObject<ViaCepResponse>(content);
        return responseData;
    }

    // Aqui você pode tratar os erros de acordo com o status code da resposta

    return null; // Ou lançar uma exceção, dependendo do que você quiser fazer
}

Dessa forma, você estará retornando o objeto completo responseData para que você possa tratá-lo de acordo com as respostas de status, como 400 ou 404.

Espero que isso ajude! Bons estudos!

Link do arquivo ViaCepIntegration: aqui

entendi, no caso eu nao tenho

_viaCepApi oque seria ele?

acho que entendi é nesse arquivo aqui eu crio um getCepAsync, pq é dele que eu uso ObterDadosViaCep, mas como eu faria isso ?

algo como

Task<>GetCepAsync(String Cep) ?

no caso eu teria que colocar algo entre <> ainda?

using webapi.Integration.Response;

namespace webapi.Integration.Interfaces
{
    public interface IViaCepIntegration
    {
        Task<ViaCepResponse> ObterDadosViaCep(string cep);
    }
}

fico na dúvida do que colocar no lugar de ViaCepResponse.

porque ViaCepResponse é exatamente igual ao contente, mas a dúvida é que preciso de mais informações além desse content e não sei como mapear.

a api pública via cep não me dá muitas informações no site dela, viacep.com.br