1
resposta

Desafio: hora da prática - Atividade 01

Apenas com isso, eu creio que já pegaria os dados referentes à API e os colocaria na tela:

using (HttpClient client = new()) {
    var endpoint = "https://www.cheapshark.com/api/1.0/deals";

    try {
        var response = await client.GetStringAsync(endpoint);
    }
    catch (Exception ex) {
        Console.WriteLine($"Ocorreu um erro ao requisitar para o Endpoint: {ex.Message}");
    }
}

Todavia, a atividade solicita guardar dados específicos relacionados a promoções em uma lista, então eu precisaria de outra forma de tratar esses dados, diferente de uma string.

Pesquisando, acabei encontrando o método GetFromJsonAsync, que me retornava como resposta valores específicos que poderiam ser armazenados em uma lista baseada no tipo de objeto requisitado. Por isso, criei uma classe externa para estruturar o objeto do tipo GameShark (foi um nome que eu pensei por ter confundido com cheapshark) com as propriedades presentes no .json, que seriam title, normalPrice(que eu acabei não usando) e salePrice.

Usei a documentação específica de HTTP request: https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/http/httpclient

GameShark.cs

class GameShark {
    public string? title {get;set;}
    public string? normalPrice {get;set;}
    public string? salePrice {get;set;}
}

Program.cs

using System.Net.Http.Json;

using (HttpClient client = new()) {
    var endpoint = "https://www.cheapshark.com/api/1.0/deals";

    try {
        var listaJogos = await client.GetFromJsonAsync<List<GameShark>>(endpoint);
        listaJogos!.ForEach(j => Console.WriteLine($"{j.title} R${j.salePrice}"));
       
    }
    catch (Exception ex) {
        Console.WriteLine($"Ocorreu um erro ao requisitar para o Endpoint: {ex}");
    }
}
1 resposta

Oi, Diego! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Muito interessante como você evoluiu da requisição simples com GetStringAsync para uma abordagem mais estruturada usando GetFromJsonAsync. Isso mostra um bom entendimento de como trabalhar com APIs e transformar os dados em objetos tipados, o que facilita muito o uso depois. A criação da classe GameShark também foi um ponto bem pensado para organizar os dados.

Parabéns pela atividade.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!