A Web API controller is a class that handles HTTP requests in an ASP.NET Web API application. It is responsible for processing incoming requests, executing business logic, and returning responses to the client. In this guide, we will walk through the steps to create a Web API controller, along with sample code.

Step 1: Set Up Your ASP.NET Web API Project

Before creating a Web API controller, ensure you have an ASP.NET Web API project set up. You can create a new project in Visual Studio by selecting the "ASP.NET Web Application" template and choosing the "Web API" option.

Step 2: Create a New Controller

To create a new Web API controller, follow these steps:

  1. Right-click on the Controllers folder in your project.
  2. Select Add > Controller.
  3. In the "Add Scaffold" dialog, choose API Controller - Empty and click Add.
  4. Name your controller (e.g., ProductsController) and click Add.

Step 3: Implement the Controller

After creating the controller, you can implement it by adding action methods to handle various HTTP requests. Below is an example of a simple ProductsController that manages a list of products:

        
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

public class ProductsController : ApiController
{
private static List<Product> products = new List<Product>
{
new Product { Id = 1, Name = "Product A", Price = 10.0M },
new Product { Id = 2, Name = "Product B", Price = 20.0M }
};

// GET api/products
public IEnumerable<Product> Get()
{
return products; // Return the list of products
}

// GET api/products/1
public IHttpActionResult Get(int id)
{
var product = products.FirstOrDefault(p => p.Id == id);
if (product == null)
{
return NotFound(); // Return 404 if not found
}
return Ok(product); // Return the product
}

// POST api/products
public IHttpActionResult Post([FromBody] Product product)
{
if (product == null)
{
return BadRequest("Invalid data.");
}
products.Add(product); // Add the new product
return CreatedAtRoute("DefaultApi", new { id = product.Id }, product); // Return 201
}

// PUT api/products/1
public IHttpActionResult Put(int id, [FromBody] Product product)
{
if (product == null || product.Id != id)
{
return BadRequest("Invalid data.");
}
var existingProduct = products.FirstOrDefault(p => p.Id == id);
if (existingProduct == null)
{
return NotFound(); // Return 404 if not found
}
existingProduct.Name = product.Name; // Update product details
existingProduct.Price = product.Price;
return StatusCode(HttpStatusCode.NoContent); // Return 204
}

// DELETE api/products/1
public IHttpActionResult Delete(int id)
{
var product = products.FirstOrDefault(p => p.Id == id);
if (product == null)
{
return NotFound(); // Return 404 if not found
}
products.Remove(product); // Remove the product
return StatusCode(HttpStatusCode.NoContent); // Return 204
}
}

public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}

Explanation of the Sample Code

In the example above:

  • The ProductsController class inherits from ApiController, which provides the necessary functionality for handling HTTP requests.
  • The Get() method handles GET requests to api/products and returns the list of products.
  • The Get(int id) method handles GET requests to api/products/{id} and returns a specific product based on the provided ID.
  • The Post() method handles POST requests to api/products and adds a new product to the list.
  • The Put(int id, [FromBody] Product product) method handles PUT requests to update an existing product's details.
  • The Delete(int id) method handles DELETE requests to remove a product from the list.

Conclusion

Creating a Web API controller in ASP.NET is a straightforward process that involves setting up your project, adding a new controller, and implementing action methods to handle various HTTP requests. By following the steps outlined in this guide, you can effectively manage resources in your Web API application and provide a robust interface for clients to interact with your data.