.NET

Plateforme de developpement multiplateforme - C# moderne, haute performance, pret pour l'entreprise

TL;DR

Quoi : Une plateforme de développement gratuite, multiplateforme et open-source pour créer des applications.

Pourquoi : C# moderne, haute performance, plateforme unifiée, excellent outillage, prêt pour l’entreprise.

Quick Start

Installation : Télécharger depuis dotnet.microsoft.com

Créer une Web API :

dotnet new webapi -n MyApi
cd MyApi
dotnet run

Ouvrez https://localhost:5001/weatherforecast

Créer une API minimale :

dotnet new web -n MinimalApi
cd MinimalApi

Modifiez 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

CommandeDescription
dotnet new webapiCréer un projet Web API
dotnet new webCréer une API minimale
dotnet runExécuter l’application
dotnet buildCompiler le projet
dotnet watch runExécuter avec hot reload
dotnet add package NameAjouter un package NuGet
dotnet ef migrations addAjouter une migration 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

// Enregistrer le service
builder.Services.AddScoped<IUserService, UserService>();

// Injecter dans le contrôleur
public class UsersController : ControllerBase
{
    private readonly IUserService _service;

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

Next Steps