API Responses in .NET Controllers
JSON Response (JsonResult)
Returns a JSON response. Automatically sets the content type to application/json.
public JsonResult GetCustomer()
{
    return Json(new { Name = "Mike", Age = 30, Gender = "Male" });
}
Object Response (ActionResult<T> or IActionResult)
Uses Ok(), NotFound(), BadRequest(), etc.
public IActionResult GetCustomer()
{
    var customer = new { Name = "Mike", Age = 30, Gender = "Male" };
    return Ok(customer); // Returns HTTP 200 with JSON data
}
ActionResult<T> is a strongly typed response.
public ActionResult<Customer> GetCustomer()
{
    var customer = new Customer { Name = "Mike", Age = 30, Gender = "Male" };
    return customer; // Automatically returns JSON with HTTP 200
}
File Response (FileResult)
Returns a file for download.
public FileResult DownloadPdf()
{
    var fileBytes = System.IO.File.ReadAllBytes("Files/sample.pdf");
    return File(fileBytes, "application/pdf", "sample.pdf");
}
Content Response (ContentResult)
Returns raw content (e.g., HTML, plain text, JSON).
public ContentResult GetHtml()
{
    return Content("<h1>Hello, World!</h1>", "text/html");
}
Status Code Response (StatusCodeResult or ObjectResult)
Returns specific HTTP status codes.
public IActionResult UnauthorizedAccess()
{
    return StatusCode(401); // Returns HTTP 401 Unauthorized
}
With additional data:
public IActionResult CustomResponse()
{
    return StatusCode(500, new { Message = "Internal Server Error" });
}
Redirect Response (RedirectResult, RedirectToActionResult)
Redirects to another URL or action.
public IActionResult RedirectToGoogle()
{
    return Redirect("https://www.google.com");
}
Redirect to another action:
public IActionResult RedirectToHome()
{
    return RedirectToAction("Index", "Home");
}
Empty Response (EmptyResult)
Returns an empty response with HTTP 200 status.
public EmptyResult DoNothing()
{
    return new EmptyResult();
}
No Content Response (NoContentResult)
Returns HTTP 204 No Content.
public IActionResult DeleteCustomer()
{
    return NoContent();
}
Bad Request (BadRequestResult or BadRequestObjectResult)
Returns HTTP 400 Bad Request.
public IActionResult InvalidRequest()
{
    return BadRequest("Invalid request data");
}
Not Found (NotFoundResult or NotFoundObjectResult)
Returns HTTP 404 Not Found.
public IActionResult GetCustomerById(int id)
{
    if (id <= 0)
        return NotFound($"Customer with ID {id} not found");
    return Ok(new { Id = id, Name = "John Doe" });
}
Created (CreatedResult or CreatedAtActionResult)
Returns HTTP 201 Created.
public IActionResult CreateCustomer(Customer customer)
{
    return CreatedAtAction(nameof(GetCustomerById), new { id = customer.Id }, customer);
}
Accepted (AcceptedResult or AcceptedAtActionResult)
Returns HTTP 202 Accepted.
public IActionResult ProcessRequest() { return Accepted(new { Status = "Processing" }); }