探索 ASP.NET Core API
ASP.NET Core 支援兩種方法來建立 API:控制器型方法和最小 API。 控制器型 API 是建置 API 的傳統方法,其中每個端點都會對應至特定控制器類別。 控制器會處理要求、執行任何必要的商業規則,並傳回回應。
控制器型 API
控制器型 Web API 是由衍生自 ControllerBase的一或多個控制器類別所組成。 以下是控制器的範例:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
Web API 控制器通常應該衍生自 ControllerBase,而不是衍生自 Controller。 Controller 衍生自 ControllerBase,並新增檢視的支援,因此用於處理網頁,而不是 Web API 要求。
ControllerBase 類別提供許多可用於處理 HTTP 要求的屬性和方法。 例如,在下列程式代碼範例中,CreatedAtAction 會傳回 201 狀態代碼:
[HttpPost]
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public ActionResult<Pet> Create(Pet pet)
{
pet.Id = _petsInMemoryStore.Any() ?
_petsInMemoryStore.Max(p => p.Id) + 1 : 1;
_petsInMemoryStore.Add(pet);
return CreatedAtAction(nameof(GetById), new { id = pet.Id }, pet);
}
最低 API
最小 API 是使用 ASP.NET Core 建置快速 HTTP API 的簡化方法。 您可以使用最少的程式代碼和組態來建置運作完整的 REST 端點。 宣告 API 路由和動作,以略過傳統的 Scaffolding。 例如,下列程序代碼會在傳回 “Hello World!” 文字的 Web 應用程式根目錄建立 API。
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run();
大部分 API 都會接受參數做為路由的一部分。
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();
最小化 API 支援所需的設定與自定義,以便擴展到多個 API、處理複雜路由、套用授權規則,並控制 API 回應的內容。