一、創建 Controllers 文件夾與 StockController

  1. 在項目根目錄下,新建 Controllers 文件夾。
  2. Controllers 中添加 StockController.cs,并命名為 StockController,以便后續針對 Stock 模型分離關注點。

namespace MyEfCoreApp.Controllers
{
    public class StockController : ControllerBase
    {
        // 后續補充代碼
    }
}

二、添加基類、注解與構造函數注入

  1. 繼承 ControllerBase 并添加 [ApiController][Route("api/[controller]")] 注解:
  2. 在 Controller 中通過構造函數注入已配置好的 ApplicationDbContext,并聲明為只讀字段,避免不必要的可變風險。

[ApiController]
[Route("api/[controller]")]
public class StockController : ControllerBase
{
    private readonly ApplicationDbContext _context;

    public StockController(ApplicationDbContext context)
    {
        _context = context;
    }
    // 列表與詳情方法在下一節實現
}

三、實現 List 與 Detail 端點

1. 列表(List)端點

使用 [HttpGet] 定義 GET /api/stock,通過 _context.Stocks.ToListAsync() 獲取所有記錄。
Deferred Execution:在調用 ToListAsync() 前,查詢尚未執行;只有在取列表時才生成 SQL 并發送。

[HttpGet]
public async Task<ActionResult<IEnumerable<Stock>>> GetStocks()
{
    return await _context.Stocks.ToListAsync();
}

2. 詳情(Detail)端點

使用 [HttpGet("{id}")] 定義 GET /api/stock/{id},通過 FindAsync(id) 按主鍵查詢單條記錄,并處理未找到的情況。

[HttpGet("{id}")]
public async Task<ActionResult<Stock>> GetStock(int id)
{
    var stock = await _context.Stocks.FindAsync(id);
    if (stock == null)
        return NotFound();
    return stock;
}

四、在 Program.cs 中注冊 Controllers

打開 Program.cs,在構建應用之前,添加對 Controllers 的注冊與映射:

var builder = WebApplication.CreateBuilder(args);

// 已注冊 DbContext(略)…

builder.Services.AddControllers();

var app = builder.Build();

app.MapControllers();

app.Run();

未調用 AddControllers()MapControllers() 會導致 Swagger 無法識別你的端點并出現 HTTPS 重定向錯誤。


五、添加測試數據 & Swagger 調試

  1. 在 SSMS 中插入測試數據

  1. 使用 Swagger 測試 API


小結與下一步

原文引自YouTube視頻:https://www.youtube.com/watch?v=cSnoAGHKVus

上一篇:

API 與自動交易:香港程式交易研究中心教程

下一篇:

異步編程實戰:在 .NET 8 ASP.NET Core Web API 中使用 async/await
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費