事件
Power BI DataViz World Championships
2月14日 下午4時 - 3月31日 下午4時
4 次參賽機會,有機會贏得會議套裝行程,現場參與在拉斯維加斯舉行的總決賽
進一步了解備註
這不是這篇文章的最新版本。 如需目前的版本,請參閱 本文的 .NET 9 版本。
警告
不再支援此版本的 ASP.NET Core。 如需詳細資訊,請參閱 .NET 和 .NET Core 支持原則。 如需目前的版本,請參閱 本文的 .NET 9 版本。
ASP.NET Core 支援兩種方法來建立 API: 控制器型方法和最少的 API。 API 專案中的「控制器」是衍生自 ControllerBase 的類別。 「基本 API」在 Lambda 或方法中使用邏輯處理常式定義端點。 本文指出這兩種方法之間的差異。
基本 API 的設計預設會隱藏主機類別,並著重於經由採用函式作為 Lambda 運算式的擴充方法進行設定和擴充。 控制器是可透過建構函式插入或屬性插入採用相依性的類別,而且通常遵循物件導向模式。 基本 API 可透過其他方法支援相依性插入,例如存取服務提供者。
以下是以控制器為基礎的 API 範例程式碼:
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();
}
}
下列程式碼在基本 API 專案中提供相同的功能。 請注意,基本 API 方法涉及在 Lambda 運算式中包含相關程式碼。
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();
}
}
這兩個 API 專案都參考下列類別:
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; }
}
基本 API 有許多與控制器型 API 相同的功能。 其支援調整為多個 API、處理複雜路由、套用授權規則,以及控制 API 回應內容所需的設定和自訂。 有一些功能可供控制器型 API 使用,但基本 API 尚未支援或實作。 包括:
ASP.NET Core 支援兩種方法來建立 API: 控制器型方法和最少的 API。 API 專案中的「控制器」是衍生自 ControllerBase 的類別。 「基本 API」在 Lambda 或方法中使用邏輯處理常式定義端點。 本文指出這兩種方法之間的差異。
基本 API 的設計預設會隱藏主機類別,並著重於經由採用函式作為 Lambda 運算式的擴充方法進行設定和擴充。 控制器是可透過建構函式插入或屬性插入採用相依性的類別,而且通常遵循物件導向模式。 基本 API 可透過其他方法支援相依性插入,例如存取服務提供者。
以下是以控制器為基礎的 API 範例程式碼:
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();
}
}
下列程式碼在基本 API 專案中提供相同的功能。 請注意,基本 API 方法涉及在 Lambda 運算式中包含相關程式碼。
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();
}
}
這兩個 API 專案都參考下列類別:
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; }
}
基本 API 有許多與控制器型 API 相同的功能。 其支援調整為多個 API、處理複雜路由、套用授權規則,以及控制 API 回應內容所需的設定和自訂。 有一些功能可供控制器型 API 使用,但基本 API 尚未支援或實作。 包括:
事件
Power BI DataViz World Championships
2月14日 下午4時 - 3月31日 下午4時
4 次參賽機會,有機會贏得會議套裝行程,現場參與在拉斯維加斯舉行的總決賽
進一步了解訓練
模組
使用最小 API、ASP.NET Core 和 .NET 建置 Web API - Training
了解如何使用 .NET 建置 Web API。 您也將了解如何設定不同的路由來同時處理讀取和寫入。