.NET

Plataforma de desarrollo multiplataforma - C# moderno, alto rendimiento, listo para empresas

TL;DR

Qué: Una plataforma de desarrollo gratuita, multiplataforma y de código abierto para crear aplicaciones.

Por qué: C# moderno, alto rendimiento, plataforma unificada, excelentes herramientas, listo para empresas.

Quick Start

Instalación: Descargar de dotnet.microsoft.com

Crear Web API:

dotnet new webapi -n MyApi
cd MyApi
dotnet run

Abre https://localhost:5001/weatherforecast

Crear API mínima:

dotnet new web -n MinimalApi
cd MinimalApi

Edita Program.cs:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");
app.MapGet("/users/{id}", (int id) => new { Id = id });

app.Run();

Cheatsheet

ComandoDescripción
dotnet new webapiCrear proyecto Web API
dotnet new webCrear API mínima
dotnet runEjecutar la aplicación
dotnet buildCompilar el proyecto
dotnet watch runEjecutar con hot reload
dotnet add package NameAñadir paquete NuGet
dotnet ef migrations addAñadir migración EF

Gotchas

Minimal API

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI();

app.MapGet("/api/users", () => new[] { "Alice", "Bob" });
app.MapPost("/api/users", (User user) => Results.Created($"/api/users/{user.Id}", user));
app.MapPut("/api/users/{id}", (int id, User user) => Results.Ok(user));
app.MapDelete("/api/users/{id}", (int id) => Results.NoContent());

app.Run();

record User(int Id, string Name);

Controller-based API

[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
    [HttpGet]
    public ActionResult<IEnumerable<User>> GetAll() => Ok(users);

    [HttpGet("{id}")]
    public ActionResult<User> Get(int id) => Ok(user);

    [HttpPost]
    public ActionResult<User> Create(User user) => CreatedAtAction(nameof(Get), new { id = user.Id }, user);
}

Dependency Injection

// Registrar servicio
builder.Services.AddScoped<IUserService, UserService>();

// Inyectar en controlador
public class UsersController : ControllerBase
{
    private readonly IUserService _service;

    public UsersController(IUserService service)
    {
        _service = service;
    }
}

Next Steps