Ejemplo básico de API para ofrecer las operaciones CRUD para una entidad "User" en .Net Core (C#):
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace UserApi.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class UserController : ControllerBase
{
private readonly AppDbContext _context;
public UserController(AppDbContext context)
{
_context = context;
}
/// <summary>
/// Obtiene todos los usuarios.
/// </summary>
[HttpGet]
public async Task<ActionResult<IEnumerable<User>>> GetUsers()
{
return await _context.Users.ToListAsync();
}
/// <summary>
/// Obtiene un usuario por su ID.
/// </summary>
/// <param name="id">ID del usuario.</param>
[HttpGet("{id}")]
public async Task<ActionResult<User>> GetUserById(int id)
{
var user = await _context.Users.FindAsync(id);
if (user == null)
{
return NotFound();
}
return user;
}
/// <summary>
/// Crea un nuevo usuario.
/// </summary>
/// <param name="user">Datos del usuario a crear.</param>
[HttpPost]
public async Task<ActionResult<User>> CreateUser(User user)
{
_context.Users.Add(user);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetUserById), new { id = user.Id }, user);
}
/// <summary>
/// Actualiza los datos de un usuario existente.
/// </summary>
/// <param name="id">ID del usuario a actualizar.</param>
/// <param name="updatedUser">Datos actualizados del usuario.</param>
[HttpPut("{id}")]
public async Task<IActionResult> UpdateUser(int id, User updatedUser)
{
if (id != updatedUser.Id)
{
return BadRequest();
}
_context.Entry(updatedUser).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!UserExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
/// <summary>
/// Elimina un usuario por su ID.
/// </summary>
/// <param name="id">ID del usuario a eliminar.</param>
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteUser(int id)
{
var user = await _context.Users.FindAsync(id);
if (user == null)
{
return NotFound();
}
_context.Users.Remove(user);
await _context.SaveChangesAsync();
return NoContent();
}
private bool UserExists(int id)
{
return _context.Users.Any(e => e.Id == id);
}
}
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options)
: base(options)
{
}
public DbSet<User> Users { get; set; }
}
}