Sunday, 1 September 2019

ASP.NET - API Url to List of Model Objects

Currently I am doing an API call via jQuery, my question is, is there away to do this call in C# or away to convert the results of an API call to an ASP.NET List of Model Objects?

Here is my Model

public class TeamStatsClass
{
        public int id { get; set; }
        public string name { get; set; }
        public string league { get; set; }
        public string division { get; set; }
}

And here is my current ajax call

$.ajax({
        url: "https://statsapi.web.nhl.com/api/v1/teams?sportId=1",
        success: function (data) {

            for (var team of data.teams) {

                console.log(team.name);

            }

        }
    });

UPDATE

I changed my classes to look like so:

public class StatsTeamsClass
    {
        public IEnumerable<Teams> teams { get; set; }
        public string copyright { get; set; }
    }
    public class Division
    {
        public int id { get; set; }
        public string name { get; set; }
        public string link { get; set; }
    }

    public class Teams
    {
        public int id { get; set; }
        public string name { get; set; }
        public string link { get; set; }
        public League league { get; set; }
        public Division division { get; set; }
    }

and created this method which indeeds puts the results in model object:

public async System.Threading.Tasks.Task<StatsTeamsClass> GetTeams()
{

            HttpClient Http = new HttpClient();
            var json = await Http.GetStringAsync("https://statsapi.web.nhl.com/api/v1/teams?sportId=1");
            StatsTeamsClass teams = JsonConvert.DeserializeObject<StatsTeamsClass>(json);

            return teams;
}

But when I try to call this method in another controller, it just hangs there, no error, no nothing, I am assuming it will just time out after a while

public class HomeController : Controller
{

        APIController webService = new APIController();

        public ActionResult Index()
        {

            var item = webService.GetTeams().Result.teams;

            return View();
        }
}

(GetTeams() is inside the controller APIController)

So what would be the proper way to A. get the results of an API in object model and then call those results?



from ASP.NET - API Url to List of Model Objects

No comments:

Post a Comment