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

通过 MediatR 实现了请求的分发和处理器的解耦

1. 前端请求发起

  • 假设前端通过 HTTP GET 请求访问 GetTemplateSettings 端点,URL 中包含了 SubjectUuidSubjectType 作为查询参数。

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
  • GetTemplateSettingsRequestHandlerIRequestHandler<GetTemplateSettingsRequest, TemplateSettingsVO> 的实现类,负责处理类型为 GetTemplateSettingsRequest 的请求并返回 TemplateSettingsVO 类型的结果。

5. 处理器执行业务逻辑

  • GetTemplateSettingsRequestHandler 类的 Handle 方法被调用。此方法接受 GetTemplateSettingsRequest 对象作为参数,并通过 IWeuuSessionIUserServiceCardDbContext 等服务执行相关的业务逻辑。
  • 业务逻辑处理完成后,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 端点&#xff0c;URL 中包含了 SubjectUuid 和 SubjectType 作为查询参数。 2. 进入 Controller 方法 请求到达后&#xff0c;会进入 MinBcController 类中的 GetTemplateSettings 方法&#xff0c;该方…...

Naive UI+vue一些组件的注意事项

NSpace(间距 Space) 默认给出space内的组件加一个div间隔&#xff0c;只能批量修改space内的元素样式&#xff0c;不能单独修改自组件样式&#xff0c;一般用于横向布局&#xff0c;若垂直布局若需要flex布局&#xff0c;慎用space组件NDataTable(数据表格 Data Table) :flex-h…...

sgetrf M N is 103040 时报错,这是个bug么 lapack and Openblas the same,修复备忘

号外&#xff1a; $ clang-format -style"{BasedOnStyle: llvm, IndentWidth: 4}" -i hello.cpp $ clang-format -style"{BasedOnStyle: llvm, IndentWidth: 4}" -i hello.cpp IndentWidth:4不错&#xff0c;默认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.面试&#xff1a;请说下在单点Redis中面临哪些问题&#xff1a; 1.1.单点Redis的问题&#xff1a; 1.数据丢失问题&#xff1a;Redis是内存存储&#xff0c;服务重启可能会丢失数据 2.并发能力问题&#xff1a;单节点Redis并发能力虽然…...

数学建模--蒙特卡洛算法之电子管更换刀片寿命问题

目录 1.电子管问题重述 2.电子管问题分析 3.电子管问题求解 4.刀片问题重述 5.刀片问题分析 6.刀片问题求解 1.电子管问题重述 某设备上安装有4只型号规格完全相同的电子管&#xff0c;已知电子管寿命服从100&#xff5e;200h之间的均匀分布&#xff0e; 只要有一个电子管…...

如何解码Linux下事件响应工具evtest的时间戳

evtest介绍 这里放一下原文链接evtest工具介绍及安装 在开发input子系统驱动时&#xff0c;常常会使用evtest工具进行测试。evtest是打印evdev内核事件的工具&#xff0c;它直接从内核设备读取并打印设备描述的带有值和符号名的事件&#xff0c;可以用来调试鼠标、键盘、触摸…...

基于STM32开发的智能门禁系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 小区门禁管理企业办公门禁系统常见问题及解决方案 常见问题解决方案结论 1. 引言 智能门禁系统通过整合多种身份识别技术&#xff0c;如密码输入、RFID刷卡、指…...

EasyExcel-高性能的 Java Excel 处理库

EasyExcel 是阿里巴巴开发的一个高性能的 Java Excel 处理库&#xff0c;主要用于处理大规模的 Excel 文件。它特别注重性能&#xff0c;优化了内存消耗&#xff0c;适合处理大数据量的 Excel 文件&#xff0c;避免了传统 Excel 库在处理大文件时的性能瓶颈。 主要功能 高性能…...

精益生产培训秘籍:六步策略,助力企业降本增效——张驰咨询

在当今竞争激烈的市场环境中&#xff0c;企业为了提高生产效率、降低成本、增强市场竞争力&#xff0c;纷纷引入精益生产理念。精益生产作为一种以客户需求为导向&#xff0c;通过持续消除浪费、优化流程、提升质量的生产方式&#xff0c;已成为众多企业转型升级的利器。张驰咨…...

【第19章】Spring Cloud之Gateway自定义Logback配置

文章目录 前言一、内置配置1. 关联依赖2. 内置配置 二、自定义配置1. 日志级别2. 彩色日志3. 自定义配置4. 增加打印语句5. 效果展示 总结 前言 网关层作为我们程序的主入口&#xff0c;有着至关重要的作用&#xff0c;下面我们通过自定义Logback配置增强网关层的日志输出&…...

Java流式编程

一、流的基础概念 流&#xff08;Stream&#xff09;&#xff1a; 定义&#xff1a;流是一种可以在数据集合上进行操作的抽象化序列&#xff0c;它没有存储数据的能力&#xff0c;而是通过一系列的操作来处理数据。特性&#xff1a; 无存储&#xff1a;流不存储数据&#xff0c…...

高可用集群keepalived从部署到实战一篇解决

目录 一.高可用集群 1.1 集群类型 1.2 系统可用性 1.3 系统故障 1.4 实现高可用 1.5.VRRP&#xff1a; 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 经济…...

警惕:手机被监听时会出现这些情况

在互联网高速发展的今天&#xff0c;手机已成为我们生活中不可或缺的一部分&#xff0c;它连接着我们的工作、学习与社交。然而&#xff0c;享受科技便利的同时&#xff0c;手机监听的风险也如影随形。 美国“斯诺登”事件曝光后&#xff0c;公众才惊觉手机监控可能就在身边。…...

Windows 系统下 MongoDB和PostgreSQL数据库数据的备份和恢复

MongoDB 数据库的备份和恢复 在 Windows 系统下进行 MongoDB 数据库的备份&#xff08;mongodump&#xff09;和恢复&#xff08;mongorestore&#xff09;操作相对直接。下面我将分别介绍这两个过程。 1. 备份数据库 (mongodump) 前提条件&#xff1a; 确保 MongoDB 服务正…...

必应Bing国内搜索广告开户收费标准公示

微软必应Bing作为全球领先的搜索引擎之一&#xff0c;其广告平台为企业提供了强大的营销工具和广泛的用户覆盖。云衔科技为广大企业提供全方位的广告开户及代运营服务&#xff0c;助力企业实现营销升级。 一、必应Bing国内搜索广告开户收费标准公示 根据最新政策&#xff0c;…...

大模型汇总:文心一言大模型、腾讯混元大模型、通义千问大模型、字节豆包大模型、智普清言大模型、KIMI 大模型、紫东太初大模型、讯飞星火大模型

文心一言大模型 作为百度自主研发的大型语言模型&#xff0c;具有显著的特点、广泛的应用场景以及独特的优势。以下是对文心一言特点、应用、优势的详细介绍&#xff1a; 特点&#xff1a;知识增强&#xff1a; 文心一言通过持续学习技术&#xff0c;不断吸收海量数据和知识…...

C语言——结构体、共用体、枚举、位运算

C语言——结构体、共用体、枚举、位运算 结构体共用体枚举位运算 结构体 如果将复杂的复杂的数据类型组织成一个组合项&#xff0c;在一个组合项中包含若干个类型不同&#xff08;当然也可以相同&#xff09;的数据项。 C语言允许用户自己指定这样一种数据结构&#xff0c;它称…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...