Consuming an ASP.NET Core Web API from a client application involves making HTTP requests to the API endpoints and handling the responses. This can be done using various methods, including using the built-in HttpClient
class in .NET, JavaScript's fetch
API, or libraries like Axios. This guide will demonstrate how to consume an ASP.NET Core Web API using HttpClient
in a .NET client application and using JavaScript in a web application.
1. Setting Up the ASP.NET Core Web API
Before consuming the API, you need to have an ASP.NET Core Web API set up. Below is a simple example of a Web API that provides product data.
Sample ASP.NET Core Web API Code
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
[HttpGet]
public ActionResult<IEnumerable<Product>> GetProducts()
{
var products = new List<Product>
{
new Product { Id = 1, Name = "Product 1" },
new Product { Id = 2, Name = "Product 2" }
};
return Ok(products);
}
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
}
This example defines a ProductsController
with a single GET endpoint that returns a list of products.
2. Consuming the API from a .NET Client Application
To consume the API from a .NET client application, you can use the HttpClient
class. Below is an example of how to set up a console application to call the API.
Sample .NET Client Code
using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var client = new HttpClient();
var products = await client.GetFromJsonAsync<Product[]>("https://localhost:5001/api/products");
foreach (var product in products)
{
Console.WriteLine($"ID: {product.Id}, Name: {product.Name}");
}
}
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
}
In this example, the console application creates an instance of HttpClient
and uses the GetFromJsonAsync
method to fetch the list of products from the API. The results are then printed to the console.
3. Consuming the API from a JavaScript Client Application
You can also consume the ASP.NET Core Web API from a JavaScript client application using the fetch
API. Below is an example of how to do this in a simple HTML page.
Sample HTML and JavaScript Code
<!DOCTYPE html>
<html>
<head>
<title>Product List</title>
</head>
<body>
<h1>Products</h1>
<ul id="productList"></ul>
<script>
fetch("https://localhost:5001/api/products")
.then(response => response.json())
.then(data => {
const productList = document.getElementById("productList");
data.forEach(product => {
const li = document.createElement("li");
li.textContent = `ID: ${product.id}, Name: ${product.name}`;
productList.appendChild(li);
});
})
.catch(error => console.error('Error fetching products:', error));
</script>
</body>
</html>
In this example, the HTML page uses the fetch
API to make a GET request to the ASP.NET Core Web API. The response is parsed as JSON, and the product data is dynamically added to an unordered list in the HTML document.
4. Handling Errors
When consuming an API, it's important to handle potential errors gracefully. In the .NET client, you can check the response status and handle exceptions. In the JavaScript client, you can catch errors in the catch
block of the promise chain.
Sample Error Handling in .NET Client
try
{
var products = await client.GetFromJsonAsync<Product[]>("https://localhost:5001/api/products");
// Process products...
}
catch (HttpRequestException e)
{
Console.WriteLine($"Request error: {e.Message}");
}
This code snippet demonstrates how to catch and handle HTTP request exceptions in the .NET client application.
Sample Error Handling in JavaScript Client
fetch("https://localhost:5001/api/products")
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
// Process data...
})
.catch(error => console.error('Error fetching products:', error));
This example shows how to check the response status in the JavaScript client and throw an error if the response is not successful.
Conclusion
Consuming an ASP.NET Core Web API from a client application can be done easily using HttpClient
in .NET or the fetch
API in JavaScript. By following the examples provided, you can set up your client application to make requests to the API, handle responses, and manage errors effectively. This allows you to build robust applications that interact with your backend services seamlessly.