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