2. 響應(yīng) DTO vs 請求 DTO


3. 舉例:絕不直接返回完整 Model

假設(shè)用戶模型里含有 Password 字段,你絕對不能連同密碼一起返回。

> 錯誤做法return user;
> 正確做法:定義 UserResponseDto { Username, Email … },只傳回安全字段。


4. 創(chuàng)建 DTO 文件夾與 StockResponseDto

  1. 在項目根目錄下新建 Dtos 文件夾;
  2. 再在其中按實體分子目錄,這里創(chuàng)建 Dtos/Stock。

    API/
    └── Dtos/
       └── Stock/
           └── StockResponseDto.cs

5. 編寫 StockResponseDto 類

public class StockResponseDto
{
    public int    Id            { get; set; }
    public string Symbol        { get; set; } = string.Empty;
    public string CompanyName   { get; set; } = string.Empty;
    public decimal PurchasePrice{ get; set; }
    public decimal LastDividend { get; set; }
    public string Industry      { get; set; } = string.Empty;
    public long   MarketCap     { get; set; }
}

6. 自寫 Mapper:Stock → StockResponseDto

Mappers/StockMapper.cs 中,利用擴展方法將 Stock 實體投射到 DTO:

public static class StockMapper
{
    public static StockResponseDto ToDto(this Stock stock) = >
        new()
        {
            Id             = stock.Id,
            Symbol         = stock.Symbol,
            CompanyName    = stock.CompanyName,
            PurchasePrice  = stock.PurchasePrice,
            LastDividend   = stock.LastDividend,
            Industry       = stock.Industry,
            MarketCap      = stock.MarketCap
        };
}

7. 在 Controller 中應(yīng)用 DTO

將原先:

var stocks = await _context.Stocks.ToList();
return ok(stocks);

替換為:

var dtos = await _context.Stocks
    .Select(s = > s.ToDto())
    .ToListAsync();
return Ok(stocks);

小結(jié)

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

上一篇:

ASP.NET Core Web API 多對多關(guān)系實戰(zhàn):POCO、Join Entity 與導(dǎo)航屬性全解析
最后一篇
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

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

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

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

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

#AI深度推理大模型API

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

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