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" }); }