ASP.NET Core 建立第一個 API

在 ASP.NET Core Web API 專案中,如果建立的是 MinimalAPI 專案,在 Program.cs 檔案中會缺少以下兩行程式碼:
    
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();

var app = builder.Build();

app.MapControllers();

app.Run();
    

增加了上面的程式碼後最主要的差別在於會自動依照 RouteAttribute 註冊路由(Route):
    
using Microsoft.AspNetCore.Mvc;


[ApiController]
[Route("[controller]")]
public class TestController : ControllerBase
{
    [HttpGet]
    public IActionResult Get()
    {
        return Ok();
    }
}
    

上面的 [Route("[controller]")] 代表會使用 Controller 的名稱來決定路由,以上面的範例就是 Test

基本 API 示範

有使用 MapControllers 後,我們可以透過建立一個新的 Class 來建立一個 API ,通常會把這個 Class 放在 Controllers 資料夾中,Class 名稱會加上 Controller 。假設是與使用者相關的,通常會命名為 UserController 。

這裡我們示範建立一個最簡單的 GET 請求
    
using Microsoft.AspNetCore.Mvc;


[Route("[controller]")]
public class UserController
{
    [HttpGet] // 定義 Http 方法
    public IActionResult Get()
    {
        return new ContentResult // 回傳結果
        {
            Content = "Hello, World!",
        };
    }
}
    

只要發送 HTTP Get 請求到 /User 就會回應「Hello, World!」

上面是最簡單的示範,不過通常大家都會讓 Controller Class 繼承 ControllerBase ,這樣我們就可以很方便的使用 Ok 或是 BadRequest 等方法簡單的回應不同的 Http Code。
並且通常還會再加上 ApiControllerAttribute ,這樣就可以自動驗證傳入資料,並且在沒有手動指定傳入參數位置的情況下也可以幫我們套用預設值。
    
using Microsoft.AspNetCore.Mvc;


[ApiController]
[Route("[controller]")]
public class UserController : ControllerBase
{
    [HttpGet]
    public IActionResult Get()
    {
        return Ok("Hello, World!");
    }
}
    




文章撰寫中...請稍後...

參考資料:
Microsoft.Learn - Create web APIs with ASP.NET Core

留言