HTTP Status Codes are standard response codes sent by the server to inform the client about the result of an API request. They help developers understand whether a request was successful or failed.
| Status Code Range | Category | Short Description |
|---|---|---|
| 1xx | Informational | Request received and processing is continuing. |
| 2xx | Success | Request successfully received, understood, and processed. |
| 3xx | Redirection | Client must take additional action to complete the request. |
| 4xx | Client Error | Request contains invalid data or is not allowed. |
| 5xx | Server Error | Server failed to process a valid request. |
Exception handling in Web API is the process of capturing runtime errors and returning meaningful, consistent HTTP responses to the client instead of application crashes or unhandled errors.
using API_Sessions.Data;
using API_Sessions.Models;
using Microsoft.AspNetCore.Mvc;
// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace API_Sessions.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ProductDBController : ControllerBase
{
private readonly ApplicationDbContext _context;
public ProductDBController(ApplicationDbContext context)
{
_context = context;
}
// GET: api/<ProductDBController>
[HttpGet]
public IActionResult Get()
{
return Ok(_context.Products.ToList());
}
// GET api/<ProductDBController>/5
[HttpGet("{id}")]
public IActionResult Get(int id)
{
var product = _context.Products.Find(id);
if(product == null)
{
return NotFound();
}
return Ok(product);
}
// POST api/<ProductDBController>
[HttpPost]
public IActionResult Post([FromBody] Product product)
{
_context.Products.Add(product);
_context.SaveChanges();
return StatusCode(StatusCodes.Status201Created);
}
// PUT api/<ProductDBController>/5
[HttpPut("{id}")]
public IActionResult Put(int id, [FromBody] Product product)
{
//exception handling
var p = _context.Products.FirstOrDefault(x=>x.Id==id);
if (p == null) {
return NotFound();
}
else
{
p.Name = product.Name;
p.Price = product.Price;
_context.SaveChanges();
return Ok("Product details updated");
}
}
// DELETE api/<ProductDBController>/5
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
var p = _context.Products.Find(id);
_context.Products.Remove(p);
_context.SaveChanges();
return Ok("Product deleted");
}
}
}
using API_Sessions.Data;
using API_Sessions.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace API_Sessions.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ProductDBController : ControllerBase
{
private readonly ApplicationDbContext _context;
public ProductDBController(ApplicationDbContext context)
{
_context = context;
}
// GET: api/<ProductDBController>
[HttpGet]
public async Task<IActionResult> Get()
{
return Ok(await _context.Products.ToListAsync());
}
// GET api/<ProductDBController>/5
[HttpGet("{id}")]
public async Task<IActionResult> Get(int id)
{
var product = await _context.Products.FirstOrDefaultAsync(x=>x.Id==id);
if(product == null)
{
return NotFound();
}
return Ok(product);
}
// POST api/<ProductDBController>
[HttpPost]
public async Task<IActionResult> Post([FromBody] Product product)
{
await _context.Products.AddAsync(product);
await _context.SaveChangesAsync();
return StatusCode(StatusCodes.Status201Created);
}
// PUT api/<ProductDBController>/5
[HttpPut("{id}")]
public async Task<IActionResult> Put(int id, [FromBody] Product product)
{
//exception handling
var p = await _context.Products.FirstOrDefaultAsync(x=>x.Id==id);
if (p == null) {
return NotFound();
}
else
{
p.Name = product.Name;
p.Price = product.Price;
await _context.SaveChangesAsync();
return Ok("Product details updated");
}
}
// DELETE api/<ProductDBController>/5
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(int id)
{
var p = await _context.Products.FindAsync(id);
_context.Products.Remove(p);
await _context.SaveChangesAsync();
return Ok("Product deleted");
}
}
}
builder.Services.AddMvc().AddXmlSerializerFormatters();