iT邦幫忙

2025 iThome 鐵人賽

DAY 5
0
自我挑戰組

打造自己的Medium系列 第 5

Day5 Web API 路由

  • 分享至 

  • xImage
  •  

路由

這邊介紹路由的兩種寫法:

1. Minimal API

適合簡單的應用

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

2. Controller + Attribute Routing

註冊Controller

// Program.cs
builder.Services.AddControllers();
// UserController.cs
[ApiController]
[Route("[controller]")]
public class UserController : ControllerBase
{
    private readonly UserService _userService;

    public UserController(UserService userService)
    {
        _userService = userService;
    }

    [HttpGet]
    public async Task<ActionResult<List<User>>> GetAll()
    {
        var users = await _userService.GetUserAsync();
        return Ok(users);
    }
}
  • [Route("[controller]")]
    這個寫法,會直接拿下面class名稱,去掉後面的Controller
  • public
    出現了三次,分別針對:
    • 類別
    • 建構子constructor
    • 方法

NestJS constructor預設就是public,不用特別寫,才注意到這個。

這裡的順序是先宣告_userService 欄位,再到constructor裡賦值,
跟NestJS直接在constructor裡,同時宣告和賦值,不太一樣。

差異對照

功能項目 ASP.NET Core 屬性 NestJS 裝飾器
類別 [ApiController][Route("...")] @Controller('...')
方法 [HttpGet][HttpPost] @Get()@Post()
路由參數 [HttpGet("{id}")] @Get(':id'),用 @Param('id') 取得

作者的哈拉

今天有些忙碌,先這樣,晚點有時間,再回來補充/images/emoticon/emoticon69.gif


上一篇
Day4 ASP.NET Core連線到MongoDB
下一篇
Day6 Vue基礎篇(上)
系列文
打造自己的Medium30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言