.NET Core  

🔥 How to Consume Web API in ASP.NET MVC Using HttpClien

Are you building an ASP.NET MVC application and need to fetch data from a Web API? Look no further!

In this article, you’ll learn how to consume a Web API using the HttpClient class in ASP.NET MVC with real examples and best practices.

✅ What You'll Learn

  • What is HttpClient in .NET?

  • How to make GET requests to an API.

  • Deserialize JSON response into objects.

  • Display API data in an MVC view.

  • Full working code example.

🚀 Why Use HttpClient?

The HttpClient class is a part of the System.Net.Http namespace and provides powerful capabilities to send HTTP requests and receive HTTP responses.

It supports

  • GET, POST, PUT, DELETE methods.

  • Asynchronous operations.

  • Custom headers and authentication.

🔧 Prerequisites

  • Visual Studio (2019 or newer recommended)

  • ASP.NET MVC project

  • A working Web API endpoint

  • NuGet package: Newtonsoft.Json

💡 Steps to Calling Web API in ASP.NET MVC

📌 Step 1. Create a Model

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Department { get; set; }
}

📌 Step 2. Create Your Controller

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using System.Web.Mvc;
using Newtonsoft.Json;
using YourApp.Models;

public class HomeController : Controller
{
    string Baseurl = "https://yourapi.com/api/";

    public async Task<ActionResult> Index()
    {
        List<Employee> EmpInfo = new List<Employee>();

        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri(Baseurl);
            client.DefaultRequestHeaders.Clear();

            // Set header to accept JSON
            client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));

            // Call API
            HttpResponseMessage Res = await client.GetAsync("Employee/GetAllEmployees");

            // Check response
            if (Res.IsSuccessStatusCode)
            {
                var EmpResponse = Res.Content.ReadAsStringAsync().Result;

                EmpInfo = JsonConvert.DeserializeObject<List<Employee>>(EmpResponse);
            }
        }

        return View(EmpInfo);
    }
}

📌 Step 3. Create the View (Index.cshtml)

@model IEnumerable<YourApp.Models.Employee>

<h2>Employee List</h2>

<table border="1">
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Department</th>
    </tr>

    @foreach (var emp in Model)
    {
        <tr>
            <td>@emp.Id</td>
            <td>@emp.Name</td>
            <td>@emp.Department</td>
        </tr>
    }
</table>

🛠 Notes and Best Practices

  • Don't instantiate HttpClient inside a loop or frequently. Consider reusing it with dependency injection.

  • 💡 Always check for IsSuccessStatusCode before using the response.

  • 🔒 For APIs that require authentication (Bearer tokens, etc.), you can add headers:

client.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue("Bearer", token);

📦 Install Newtonsoft.Json

Install-Package Newtonsoft.Json

🏁 Conclusion

In this article, you learned how to use the HttpClient class in ASP.NET MVC to consume a Web API. This approach is commonly used in enterprise apps where front-end MVC needs to pull data from microservices or external APIs.