ASP.NET Core Web API DTO 实践:Data Transfer Object 全方位解析
作者:xiaoxin.gao · 2025-06-27 · 阅读时间:3分钟
ASP.NET Core DTO
DTO 裁剪 Model
Select map ToDto
StockResponseDto 教程
Web API Data Transfer Object
手写 DTO Mapper
1. 什么是 DTO?为何要用它? 在 .NET 世界,DTO(Data Transfer Object)是一 […]
文章目录
1. 什么是 DTO?为何要用它?
在 .NET 世界,DTO(Data Transfer Object)是一种“瘦身”模型,用于在 API 与客户端之间传输数据。它可以:
- 裁剪字段:去除如密码、内部标识等不应泄露的属性;
- 定制格式:前端只需关心特定字段,无需承受完整实体。
2. 响应 DTO vs 请求 DTO
- 响应 DTO:定义服务端返回给客户端的数据结构;
- 请求 DTO:定义客户端提交给服务端的数据结构。
90% 的场景里,API 的入参与出参都会使用这两类 DTO,对业务层与数据层起到解耦保护。
3. 举例:绝不直接返回完整 Model

假设用户模型里含有 Password 字段,你绝对不能连同密码一起返回。
错误做法:
return user;
正确做法:定义UserResponseDto { Username, Email … },只传回安全字段。
4. 创建 DTO 文件夹与 StockResponseDto

- 在项目根目录下新建
Dtos文件夹; -
再在其中按实体分子目录,这里创建
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 中应用 DTO

将原先:
var stocks = await _context.Stocks.ToList();
return ok(stocks);
替换为:
var dtos = await _context.Stocks
.Select(s = > s.ToDto())
.ToListAsync();
return Ok(stocks);
Select(s = > s.ToDto())等同于 JavaScript 的map,批量转换为 DTO。
小结
- DTO:裁剪与定制数据结构,提升安全与性能;
- 扩展方法 Mapper:轻量、直观,比 AutoMapper 更易掌控;
- Select + ToDto:让 Controller 返回清晰、可维护的 DTO 列表。
原文引自YouTube视频:https://www.youtube.com/watch?v=Mxm81T7waO8
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
最新文章
- OWASP API十大漏洞及DAST如何保护您 …
- API安全在物联网(IoT)中的关键作用
- Java后端API接口开发规范
- PyJWT:轻松搞定Token认证,让你的API更安全!
- 2025年7月GitHub 上热门的10大API开源项目
- 构建远程医疗应用的10个最佳Telehealth API选项
- 使用 FastAPI、Docker 和 Hugging Face Transformers 的文本分类 API
- IdeaGitLab 插件API Token is not valid解决方案
- API架构设计基础
- 什么是GPT-4?完整指南
- 最佳API测试工具:REST和SOAP自动化 – Parasoft
- 如何使用Ollama(完整Ollama速查表)- Apidog