Delen via


Overzicht van API's

Opmerking

Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor de huidige release.

Waarschuwing

Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie de .NET- en .NET Core-ondersteuningsbeleidvoor meer informatie. Zie de .NET 9-versie van dit artikelvoor de huidige release.

Belangrijk

Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.

Zie de .NET 9-versie van dit artikelvoor de huidige release.

ASP.NET Core biedt twee benaderingen voor het bouwen van HTTP-API's: minimale API's en op controller gebaseerde API's. Voor nieuwe projecten raden we u aan minimale API's te gebruiken omdat ze een vereenvoudigde, krachtige benadering bieden voor het bouwen van API's met minimale code en configuratie.

Minimale API's zijn de aanbevolen methode voor het bouwen van snelle HTTP-API's met ASP.NET Core. Hiermee kunt u volledig functionerende REST eindpunten bouwen met minimale code en configuratie. Sla traditionele scaffolding over en vermijd onnodige controllers door vloeiend API-routes en -acties te declareren.

Hier volgt een eenvoudig voorbeeld waarmee een API wordt gemaakt in de hoofdmap van de web-app:

var app = WebApplication.Create(args);

app.MapGet("/", () => "Hello World!");

app.Run();

De meeste API's accepteren parameters als onderdeel van de route:

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();

Minimale API's ondersteunen de configuratie en aanpassing die nodig zijn om te schalen naar meerdere API's, complexe routes te verwerken, autorisatieregels toe te passen en de inhoud van API-antwoorden te beheren.

Aan de slag met minimale API's

Api's op basis van een controller - Alternatieve benadering

ASP.NET Core biedt ook ondersteuning voor een op controller gebaseerde benadering waarbij controllers klassen zijn die zijn afgeleid van ControllerBase. Deze benadering volgt traditionele objectgeoriënteerde patronen en kan de voorkeur hebben voor:

  • Grote toepassingen met complexe bedrijfslogica
  • Teams die bekend zijn met het MVC-patroon
  • Toepassingen waarvoor specifieke MVC-functies zijn vereist

Hier volgt voorbeeldcode voor een API op basis van controllers:


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();
    }
}

De volgende code biedt dezelfde functionaliteit met behulp van de aanbevolen minimale API-benadering:


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();
    }
}

Beide API-projecten verwijzen naar de volgende klasse:

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; }
}

Kiezen tussen benaderingen

Begin met Minimale API's voor nieuwe projecten. Ze bieden:

  • Eenvoudigere syntaxis - Minder standaardcode
  • Betere prestaties : minder overhead vergeleken met controllers
  • Eenvoudiger testen - Vereenvoudigde eenheids- en integratietests
  • Moderne benadering : maakt gebruik van de nieuwste .NET-functies

Overweeg api's op basis van een controller als u het volgende nodig hebt:

De meeste van deze functies kunnen worden geïmplementeerd in Minimale API's met aangepaste oplossingen, maar controllers bieden ze standaard.

Zie ook

ASP.NET Core biedt twee benaderingen voor het bouwen van HTTP-API's: minimale API's en op controller gebaseerde API's. Voor nieuwe projecten raden we u aan minimale API's te gebruiken omdat ze een vereenvoudigde, krachtige benadering bieden voor het bouwen van API's met minimale code en configuratie.

Minimale API's zijn de aanbevolen methode voor het bouwen van snelle HTTP-API's met ASP.NET Core. Hiermee kunt u volledig functionerende REST eindpunten bouwen met minimale code en configuratie.

Hier volgt een eenvoudig voorbeeld:

var app = WebApplication.Create(args);

app.MapGet("/", () => "Hello World!");

app.Run();

Aan de slag met minimale API's

Api's op basis van een controller - Alternatieve benadering

Controllers zijn klassen die zijn afgeleid van ControllerBase. Deze benadering volgt traditionele objectgeoriënteerde patronen.

Hier volgt voorbeeldcode voor een API op basis van controllers:


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();
    }
}

De volgende code biedt dezelfde functionaliteit met behulp van de aanbevolen minimale API-benadering:


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();
    }
}

Beide API-projecten verwijzen naar de volgende klasse:

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; }
}

Kiezen tussen benaderingen

Begin met Minimale API's voor nieuwe projecten. Overweeg api's op basis van een controller als u het volgende nodig hebt:

Zie ook