当前位置: 首页 > news >正文

ASP.NET Core 分层设计实践拒绝胖Controller

Controller 是 API 的入口,理论上应该只做三件事:接收请求、调用下层、返回响应。但在实际项目中,不少开发者会把用户校验、金额判断、业务限制条件直接写进 Controller Action,久而久之就成了所谓的"胖 Controller"。这不只是代码整洁的问题。业务规则一旦耦合进 Controller,测试就得通过 HTTP 请求来驱动,需求变更时要在 Controller 里翻来覆去地找条件分支,多个接口复用同一段逻辑也变得困难。本文展示如何识别问题并系统地解决它。胖 Controller 长什么样以一个电商下单场景为例,来看一段典型的"胖"实现:using System; using Microsoft.AspNetCore.Mvc; namespace EcCommerce.Controllers; [ApiController] [Route("api/[controller]")] public class OrdersController : ControllerBase { private readonly ApplicationDbContext _context; public OrdersController(ApplicationDbContext context) { _context = context; } [HttpPost] public async TaskIActionResult CreateOrder(CreateOrderRequest request) { var user = await _context.Users .Include(u = u.Orders) .FirstOrDefaultAsync(u = u.Id == request.UserId); if (user == null) return NotFound("User not found"); if (!user.IsActive) return BadRequest("User is not active"); if (request.TotalAmount = 0) return BadRequest("Invalid order amount"); var todayOrdersCount = user.Orders .Count(o = o.CreatedAt.Date == DateTime.UtcNow.Date); if (todayOrdersCount = 5) return BadRequest("Daily or
http://www.zskr.cn/news/1356175.html

相关文章:

  • 5分钟快速上手:Akagi麻将AI助手完整实战指南
  • Cursor Free VIP终极指南:5步实现AI编程助手永久免费使用
  • 3步掌握AI图像分层:零基础快速入门指南
  • 在电脑上免费畅玩Switch游戏:Ryujinx模拟器终极完整指南
  • 如何在电脑上免费畅玩Switch游戏:Ryujinx模拟器完全指南
  • HLOC (Hierarchical-Localization) 技术文档
  • 深度解析:基于PyTorch的100行代码实现扩散模型核心技术
  • TryOPC社区平台
  • M3U8下载器终极指南:三步搞定加密视频下载,告别在线观看限制!
  • 川西小众出行|新都桥稻城亚丁靠谱小团怎么选
  • Android Studio中文界面终极指南:告别英文困扰,3分钟打造母语开发环境
  • 宁夏医科大学AI论文工具一键生成排版 各类文稿AIGC智能降重实操指南
  • OpCore Simplify:三步骤完成OpenCore EFI配置,黑苹果新手也能轻松上手
  • 【独家首发】基于127组A/B测试数据:Midjourney --sref + --stylize双变量渐变调控模型(仅限本期公开)
  • Faster-Whisper-GUI中文简繁体转换的3种解决方案深度解析
  • 使用Nodejs和Taotoken为前端应用集成AI对话能力
  • 配置OpenClaw Agent使用Taotoken作为模型供应商
  • MoMask:革命性3D人体动画生成技术,让创意自由流动
  • 终极指南:免费开源SMUDebugTool实现AMD Ryzen处理器深度调试与精准控制
  • 终极BepisPlugins插件合集:彻底改变你的Illusion游戏体验![特殊字符]
  • 戴森球计划工厂蓝图:革命性工厂配置架构的5大技术突破
  • 黑苹果配置终极简化:OpCore Simplify三步搞定OpenCore EFI
  • 字体压缩实战:Fontmin深度指南与最佳实践
  • Day04 Web应用蜜罐系统堡垒机运维API内外接口第三方拓展架构部署影响
  • Topit:macOS窗口置顶工具,让多任务工作流更流畅
  • 如何快速生成Beyond Compare 5注册密钥:3种方法完整教程
  • 如何用强化学习实战构建智能交通信号控制系统?[特殊字符]
  • 水促进铜氧化lammps_ReaxFF分子动力学模拟
  • 80集短剧,3天拍完:当电影人下场做Agent,影视生产迎来了“最懂行”的解法
  • RAG检索增强:新手程序员必备教程,轻松掌握大模型知识更新与优化技巧(收藏版)