Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Varning
Den här versionen av ASP.NET Core stöds inte längre. Mer information finns i .NET och .NET Core Support Policy. För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .
Viktigt!
Den här informationen gäller en förhandsversionsprodukt som kan ändras avsevärt innan den släpps kommersiellt. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, med avseende på den information som tillhandahålls här.
För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .
ASP.NET Core innehåller två metoder för att skapa HTTP-API:er: Minimala API:er och kontrollantbaserade API:er. För nya projekt rekommenderar vi att du använder minimala API:er eftersom de tillhandahåller en förenklad metod med höga prestanda för att skapa API:er med minimal kod och konfiguration.
Minimala API:er – rekommenderas för nya projekt
Minimala API:er är den rekommenderade metoden för att skapa snabba HTTP-API:er med ASP.NET Core. De gör att du kan skapa fullt fungerande REST slutpunkter med minimal kod och konfiguration. Hoppa över traditionella byggnadsställningar och undvik onödiga kontrollanter genom att flytande deklarera API-vägar och åtgärder.
Här är ett enkelt exempel som skapar ett API i webbappens rot:
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run();
De flesta API:er accepterar parametrar som en del av vägen:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/users/{userId}/books/{bookId}", 
    (int userId, int bookId) => $"The user id is {userId} and book id is {bookId}");
app.Run();
Minimala API:er stöder den konfiguration och anpassning som krävs för att skala till flera API:er, hantera komplexa vägar, tillämpa auktoriseringsregler och kontrollera innehållet i API-svar.
Komma igång med minimala API:er
- Självstudie: Självstudie: Skapa ett minimalt API med ASP.NET Core
- Snabbreferens: Snabbreferens för minimala API:er
- Exempel: En fullständig lista över vanliga scenarier med kodexempel finns i Snabbreferens för minimala API:er
Controller-baserade API:er – alternativ metod
ASP.NET Core har också stöd för en kontrollantbaserad metod där kontrollanter är klasser som härleds från ControllerBase. Den här metoden följer traditionella objektorienterade mönster och kan vara att föredra för:
- Stora program med komplex affärslogik
- Team som är bekanta med MVC-mönstret
- Program som kräver specifika MVC-funktioner
Här är exempelkoden för ett API baserat på kontrollanter:
namespace APIWithControllers;
public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);
        builder.Services.AddControllers();
        var app = builder.Build();
        app.UseHttpsRedirection();
        app.MapControllers();
        app.Run();
    }
}
using Microsoft.AspNetCore.Mvc;
namespace APIWithControllers.Controllers;
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };
    private readonly ILogger<WeatherForecastController> _logger;
    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }
    [HttpGet(Name = "GetWeatherForecast")]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}
Följande kod innehåller samma funktioner med den rekommenderade metoden Minimal API:
namespace MinimalAPI;
public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);
        var app = builder.Build();
        app.UseHttpsRedirection();
        var summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };
        app.MapGet("/weatherforecast", (HttpContext httpContext) =>
        {
            var forecast = Enumerable.Range(1, 5).Select(index =>
                new WeatherForecast
                {
                    Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
                    TemperatureC = Random.Shared.Next(-20, 55),
                    Summary = summaries[Random.Shared.Next(summaries.Length)]
                })
                .ToArray();
            return forecast;
        });
        app.Run();
    }
}
Båda API-projekten refererar till följande klass:
namespace APIWithControllers;
public class WeatherForecast
{
    public DateOnly Date { get; set; }
    public int TemperatureC { get; set; }
    public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
    public string? Summary { get; set; }
}
Välja mellan metoder
Börja med Minimala API:er för nya projekt. De erbjuder:
- Enklare syntax – Mindre pannplåtskod
- Bättre prestanda – Lägre omkostnader jämfört med styrenheter
- Enklare testning – Förenklad enhets- och integreringstestning
- Modern metod – Utnyttjar de senaste .NET-funktionerna
Överväg kontrollantbaserade API:er om du behöver:
- Utökningsbarhet för modellbindning (IModelBinderProvider, IModelBinder)
- Avancerade valideringsfunktioner (IModelValidator)
- Programdelar eller programmodellen
- Stöd för JsonPatch
- OData-stöd
De flesta av dessa funktioner kan implementeras i Minimala API:er med anpassade lösningar, men kontrollanter tillhandahåller dem direkt.
Se även
- Självstudie: Skapa ett minimalt API med ASP.NET Core – minimal API-självstudie
- Snabbreferens för minimala API:er – Snabbreferens för minimala API:er
- Skapa webb-API:er med ASP.NET Core – Översikt över styrenhetsbaserade API:er
- Självstudie: Skapa ett kontrollantbaserat webb-API med självstudien ASP.NET Core – Controller-baserad API
ASP.NET Core innehåller två metoder för att skapa HTTP-API:er: Minimala API:er och kontrollantbaserade API:er. För nya projekt rekommenderar vi att du använder minimala API:er eftersom de tillhandahåller en förenklad metod med höga prestanda för att skapa API:er med minimal kod och konfiguration.
Minimala API:er – rekommenderas för nya projekt
Minimala API:er är den rekommenderade metoden för att skapa snabba HTTP-API:er med ASP.NET Core. De gör att du kan skapa fullt fungerande REST slutpunkter med minimal kod och konfiguration.
Här är ett enkelt exempel:
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run();
Komma igång med minimala API:er
- Självstudie: Självstudie: Skapa ett minimalt API med ASP.NET Core
- Snabbreferens: Snabbreferens för minimala API:er
Controller-baserade API:er – alternativ metod
Kontrollanter är klasser som härleds från ControllerBase. Den här metoden följer traditionella objektorienterade mönster.
Här är exempelkoden för ett API baserat på kontrollanter:
namespace APIWithControllers;
public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);
        builder.Services.AddControllers();
        var app = builder.Build();
        app.UseHttpsRedirection();
        app.MapControllers();
        app.Run();
    }
}
using Microsoft.AspNetCore.Mvc;
namespace APIWithControllers.Controllers;
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };
    private readonly ILogger<WeatherForecastController> _logger;
    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }
    [HttpGet(Name = "GetWeatherForecast")]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}
Följande kod innehåller samma funktioner med den rekommenderade metoden Minimal API:
namespace MinimalAPI;
public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);
        var app = builder.Build();
        app.UseHttpsRedirection();
        var summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };
        app.MapGet("/weatherforecast", (HttpContext httpContext) =>
        {
            var forecast = Enumerable.Range(1, 5).Select(index =>
                new WeatherForecast
                {
                    Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
                    TemperatureC = Random.Shared.Next(-20, 55),
                    Summary = summaries[Random.Shared.Next(summaries.Length)]
                })
                .ToArray();
            return forecast;
        });
        app.Run();
    }
}
Båda API-projekten refererar till följande klass:
namespace APIWithControllers;
public class WeatherForecast
{
    public DateOnly Date { get; set; }
    public int TemperatureC { get; set; }
    public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
    public string? Summary { get; set; }
}
Välja mellan metoder
Börja med Minimala API:er för nya projekt. Överväg kontrollantbaserade API:er om du behöver:
- Utökningsbarhet för modellbindning (IModelBinderProvider, IModelBinder)
- Stöd för formulärbindning, inklusive IFormFile
- Avancerade valideringsfunktioner (IModelValidator)
- Programdelar eller programmodellen
- Stöd för JsonPatch
- OData-stöd
Se även
- Självstudie: Skapa ett minimalt API med ASP.NET Core – minimal API-självstudie
- Snabbreferens för minimala API:er – Snabbreferens för minimala API:er
- Skapa webb-API:er med ASP.NET Core – Översikt över styrenhetsbaserade API:er
- Självstudie: Skapa ett kontrollantbaserat webb-API med självstudien ASP.NET Core – Controller-baserad API
ASP.NET Core