一、創(chuàng)建 Controllers 文件夾與 StockController

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

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

二、添加基類、注解與構(gòu)造函數(shù)注入

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

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

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

三、實現(xiàn) List 與 Detail 端點

1. 列表(List)端點

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

[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,在構(gòu)建應(yīng)用之前,添加對 Controllers 的注冊與映射:

var builder = WebApplication.CreateBuilder(args);

// 已注冊 DbContext(略)…

builder.Services.AddControllers();

var app = builder.Build();

app.MapControllers();

app.Run();

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


五、添加測試數(shù)據(jù) & Swagger 調(diào)試

  1. 在 SSMS 中插入測試數(shù)據(jù)

  1. 使用 Swagger 測試 API


小結(jié)與下一步

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

上一篇:

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

下一篇:

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

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

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

#AI深度推理大模型API

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

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