通过 MediatR 实现了请求的分发和处理器的解耦
1. 前端请求发起
- 假设前端通过 HTTP GET 请求访问
GetTemplateSettings端点,URL 中包含了SubjectUuid和SubjectType作为查询参数。
2. 进入 Controller 方法
- 请求到达后,会进入
MinBcController类中的GetTemplateSettings方法,该方法是通过[HttpGet("GetTemplateSettings")]特性绑定的。 GetTemplateSettings方法接收一个GetTemplateSettingsRequest类型的参数,该参数由FromQuery特性指定从 URL 查询参数中绑定。
[HttpGet("GetTemplateSettings")]
public async Task<Result<TemplateSettingsVO>> GetTemplateSettings([FromQuery] GetTemplateSettingsRequest request)
{
var data = await mediator.Send(request);
return new Result<TemplateSettingsVO>(data);
}- public record GetTemplateSettingsRequest(string SubjectUuid, SubjectType SubjectType) : IRequest<TemplateSettingsVO>;
3. 请求通过 MediatR 分发
- 在
GetTemplateSettings方法内部,通过调用mediator.Send(request)将GetTemplateSettingsRequest请求对象发送给 MediatR 进行处理。
4. MediatR 查找并执行处理器
- MediatR 接收到
GetTemplateSettingsRequest请求后,会根据该请求的类型GetTemplateSettingsRequest,找到对应的处理器GetTemplateSettingsRequestHandler。 GetTemplateSettingsRequestHandler是IRequestHandler<GetTemplateSettingsRequest, TemplateSettingsVO>的实现类,负责处理类型为GetTemplateSettingsRequest的请求并返回TemplateSettingsVO类型的结果。
5. 处理器执行业务逻辑
GetTemplateSettingsRequestHandler类的Handle方法被调用。此方法接受GetTemplateSettingsRequest对象作为参数,并通过IWeuuSession、IUserService、CardDbContext等服务执行相关的业务逻辑。- 业务逻辑处理完成后,
Handle方法返回一个TemplateSettingsVO对象。
- public class GetTemplateSettingsRequestHandler(IWeuuSession session, IUserService userService, CardDbContext cardContext)
: IRequestHandler<GetTemplateSettingsRequest, TemplateSettingsVO>
{
public async Task<TemplateSettingsVO> Handle(GetTemplateSettingsRequest request,
CancellationToken cancellationToken)
{
//其他代码
return v;
}
}
6. 返回处理结果
- MediatR 将
Handle方法返回的TemplateSettingsVO对象返回给GetTemplateSettings方法中的data变量。 GetTemplateSettings方法将TemplateSettingsVO包装在Result<TemplateSettingsVO>对象中,并作为 HTTP 响应返回给前端。
7. 前端收到响应
- 最终,前端接收到包含
TemplateSettingsVO数据的 HTTP 响应,并根据该数据进行后续处理。
总结
整个流程通过 MediatR 实现了请求的分发和处理器的解耦,使得 Controller 层只需要关心如何将请求发送给 MediatR,而业务逻辑则集中在处理器中处理。这种设计提高了代码的可维护性和可扩展性。
相关文章:
通过 MediatR 实现了请求的分发和处理器的解耦
1. 前端请求发起 假设前端通过 HTTP GET 请求访问 GetTemplateSettings 端点,URL 中包含了 SubjectUuid 和 SubjectType 作为查询参数。 2. 进入 Controller 方法 请求到达后,会进入 MinBcController 类中的 GetTemplateSettings 方法,该方…...
Naive UI+vue一些组件的注意事项
NSpace(间距 Space) 默认给出space内的组件加一个div间隔,只能批量修改space内的元素样式,不能单独修改自组件样式,一般用于横向布局,若垂直布局若需要flex布局,慎用space组件NDataTable(数据表格 Data Table) :flex-h…...
sgetrf M N is 103040 时报错,这是个bug么 lapack and Openblas the same,修复备忘
号外: $ clang-format -style"{BasedOnStyle: llvm, IndentWidth: 4}" -i hello.cpp $ clang-format -style"{BasedOnStyle: llvm, IndentWidth: 4}" -i hello.cpp IndentWidth:4不错,默认2太下了 1,现象 MN103040时&…...
[后端代码审计] PHP 数组知识汇总
文章目录 前言1. 数组基础1.1 数组概念1.2 索引数组1.3 关联数组1.4 多维数组 2. 数组函数2.1 count()2.2 array_merge()2.3 array_keys()2.4 array_values()2.5 in_array() 3. 数组遍历3.1 for循环遍历3.2 foreach遍历3.3 遍历索引数组3.4 遍历关联数组 4. 数组排序4.1 sort()…...
单点Redis中面临哪些问题
我的后端学习大纲 我的Redis学习大纲 1.面试:请说下在单点Redis中面临哪些问题: 1.1.单点Redis的问题: 1.数据丢失问题:Redis是内存存储,服务重启可能会丢失数据 2.并发能力问题:单节点Redis并发能力虽然…...
数学建模--蒙特卡洛算法之电子管更换刀片寿命问题
目录 1.电子管问题重述 2.电子管问题分析 3.电子管问题求解 4.刀片问题重述 5.刀片问题分析 6.刀片问题求解 1.电子管问题重述 某设备上安装有4只型号规格完全相同的电子管,已知电子管寿命服从100~200h之间的均匀分布. 只要有一个电子管…...
如何解码Linux下事件响应工具evtest的时间戳
evtest介绍 这里放一下原文链接evtest工具介绍及安装 在开发input子系统驱动时,常常会使用evtest工具进行测试。evtest是打印evdev内核事件的工具,它直接从内核设备读取并打印设备描述的带有值和符号名的事件,可以用来调试鼠标、键盘、触摸…...
基于STM32开发的智能门禁系统
目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 小区门禁管理企业办公门禁系统常见问题及解决方案 常见问题解决方案结论 1. 引言 智能门禁系统通过整合多种身份识别技术,如密码输入、RFID刷卡、指…...
EasyExcel-高性能的 Java Excel 处理库
EasyExcel 是阿里巴巴开发的一个高性能的 Java Excel 处理库,主要用于处理大规模的 Excel 文件。它特别注重性能,优化了内存消耗,适合处理大数据量的 Excel 文件,避免了传统 Excel 库在处理大文件时的性能瓶颈。 主要功能 高性能…...
精益生产培训秘籍:六步策略,助力企业降本增效——张驰咨询
在当今竞争激烈的市场环境中,企业为了提高生产效率、降低成本、增强市场竞争力,纷纷引入精益生产理念。精益生产作为一种以客户需求为导向,通过持续消除浪费、优化流程、提升质量的生产方式,已成为众多企业转型升级的利器。张驰咨…...
【第19章】Spring Cloud之Gateway自定义Logback配置
文章目录 前言一、内置配置1. 关联依赖2. 内置配置 二、自定义配置1. 日志级别2. 彩色日志3. 自定义配置4. 增加打印语句5. 效果展示 总结 前言 网关层作为我们程序的主入口,有着至关重要的作用,下面我们通过自定义Logback配置增强网关层的日志输出&…...
Java流式编程
一、流的基础概念 流(Stream): 定义:流是一种可以在数据集合上进行操作的抽象化序列,它没有存储数据的能力,而是通过一系列的操作来处理数据。特性: 无存储:流不存储数据,…...
高可用集群keepalived从部署到实战一篇解决
目录 一.高可用集群 1.1 集群类型 1.2 系统可用性 1.3 系统故障 1.4 实现高可用 1.5.VRRP: 1.5.1 VRRP 相关术语 1.5.2 VRRP 相关技术 二.Keepalived 部署 2.1 keepalived 简介 2.2keepalived架构 2.3 Keepalived 环境准备 2.4 Keepalived 相关文件 2.…...
22222222222
222222222222222222...
springboot宠物相亲平台-计算机毕业设计源码16285
目 录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2 开发环境及相关技术介绍 2.1 MySQL数据库的介绍 2.2 B/S架构的介绍 2.3 Java语言 2.4 SpringBoot框架 3 宠物相亲平台系统分析 3.1 可行性分析 3.1.1 技术可行性分析 3.1.2 经济…...
警惕:手机被监听时会出现这些情况
在互联网高速发展的今天,手机已成为我们生活中不可或缺的一部分,它连接着我们的工作、学习与社交。然而,享受科技便利的同时,手机监听的风险也如影随形。 美国“斯诺登”事件曝光后,公众才惊觉手机监控可能就在身边。…...
Windows 系统下 MongoDB和PostgreSQL数据库数据的备份和恢复
MongoDB 数据库的备份和恢复 在 Windows 系统下进行 MongoDB 数据库的备份(mongodump)和恢复(mongorestore)操作相对直接。下面我将分别介绍这两个过程。 1. 备份数据库 (mongodump) 前提条件: 确保 MongoDB 服务正…...
必应Bing国内搜索广告开户收费标准公示
微软必应Bing作为全球领先的搜索引擎之一,其广告平台为企业提供了强大的营销工具和广泛的用户覆盖。云衔科技为广大企业提供全方位的广告开户及代运营服务,助力企业实现营销升级。 一、必应Bing国内搜索广告开户收费标准公示 根据最新政策,…...
大模型汇总:文心一言大模型、腾讯混元大模型、通义千问大模型、字节豆包大模型、智普清言大模型、KIMI 大模型、紫东太初大模型、讯飞星火大模型
文心一言大模型 作为百度自主研发的大型语言模型,具有显著的特点、广泛的应用场景以及独特的优势。以下是对文心一言特点、应用、优势的详细介绍: 特点:知识增强: 文心一言通过持续学习技术,不断吸收海量数据和知识…...
C语言——结构体、共用体、枚举、位运算
C语言——结构体、共用体、枚举、位运算 结构体共用体枚举位运算 结构体 如果将复杂的复杂的数据类型组织成一个组合项,在一个组合项中包含若干个类型不同(当然也可以相同)的数据项。 C语言允许用户自己指定这样一种数据结构,它称…...
Amphenol ICC RJE1Y13A83152401线束组件解析与替代方案分享
在工业通信、网络设备以及自动化控制系统中,RJ45网线组件一直是不可忽视的重要连接部件。尤其是在工业以太网、交换机、工控主机以及嵌入式通信设备中,高可靠性的线束组件直接影响整机稳定性。 近期不少工程师在项目选型中关注到一款来自 Amphenol ICC 的…...
如何用FanControl在5分钟内解决Windows风扇噪音问题?
如何用FanControl在5分钟内解决Windows风扇噪音问题? 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/…...
ViGEmBus虚拟手柄驱动完全指南:Windows游戏手柄兼容性终极解决方案
ViGEmBus虚拟手柄驱动完全指南:Windows游戏手柄兼容性终极解决方案 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否厌倦了在Windows上使用…...
《Java 100 天进阶之路》第1篇:编程语言类型有哪些?我心中的TOP1编程语言,什么是Java跨平台性?
第1篇:编程语言类型有哪些?我心中的TOP1编程语言,什么是Java跨平台性? 一、核心知识点 编程语言的三大类型:机器语言、汇编语言、高级语言Java为什么是“一次编写,到处运行”(跨平台原理&…...
PIC18F4550微控制器实现USB大容量存储设备设计
1. USB大容量存储设备设计概述USB大容量存储设备(Mass Storage Device,MSD)已成为现代数字生活中不可或缺的组成部分。从U盘到移动硬盘,这类设备的核心都是基于USB Mass Storage Class协议实现的。本文将深入探讨如何利用PIC18F45…...
离线环境下的高效远程开发:手把手搭建VS Code Remote-SSH离线开发环境
1. 为什么需要离线远程开发环境 在不少企业研发场景中,开发机往往处于严格的内网隔离环境。我去年参与过一个军工项目,所有开发设备都禁止连接互联网,第一次遇到这种情况时,传统在线安装方式完全失效,团队花了整整两天…...
脉冲神经网络硬件实现:整数状态SNN的优化策略
1. 脉冲神经网络的硬件实现挑战在神经形态计算领域,脉冲神经网络(SNN)因其生物启发特性和事件驱动的计算范式,正逐渐成为边缘计算和低功耗AI应用的重要选择。作为一名长期从事神经形态硬件设计的工程师,我见证了SNN从理…...
KMS_VL_ALL_AIO:基于微软官方协议的系统激活工具技术解析
KMS_VL_ALL_AIO:基于微软官方协议的系统激活工具技术解析 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO KMS_VL_ALL_AIO是一款基于微软KMS(密钥管理服务)协议…...
构建更优Godot MCP:AI助手与游戏开发工作流深度集成方案
1. 项目概述:为什么我们需要一个更好的Godot MCP?如果你是一个长期使用Godot引擎的开发者,尤其是当你尝试将AI能力,比如大型语言模型(LLM),集成到你的游戏开发工作流中时,你很可能听…...
避坑指南:Quartus II 18.1中Platform Designer配置Nios II软核的5个关键细节与常见错误
Quartus II 18.1中Platform Designer配置Nios II软核的深度避坑指南 在FPGA开发中,Nios II软核处理器的配置看似简单,实则暗藏诸多细节陷阱。许多开发者在Platform Designer(原QSYS)中按部就班完成配置后,往往会遇到各…...
