当前位置: 首页 > 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;它称…...

Amphenol ICC RJE1Y13A83152401线束组件解析与替代方案分享

在工业通信、网络设备以及自动化控制系统中&#xff0c;RJ45网线组件一直是不可忽视的重要连接部件。尤其是在工业以太网、交换机、工控主机以及嵌入式通信设备中&#xff0c;高可靠性的线束组件直接影响整机稳定性。 近期不少工程师在项目选型中关注到一款来自 Amphenol ICC 的…...

如何用FanControl在5分钟内解决Windows风扇噪音问题?

如何用FanControl在5分钟内解决Windows风扇噪音问题&#xff1f; 【免费下载链接】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虚拟手柄驱动完全指南&#xff1a;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篇&#xff1a;编程语言类型有哪些&#xff1f;我心中的TOP1编程语言&#xff0c;什么是Java跨平台性&#xff1f; 一、核心知识点 编程语言的三大类型&#xff1a;机器语言、汇编语言、高级语言Java为什么是“一次编写&#xff0c;到处运行”&#xff08;跨平台原理&…...

PIC18F4550微控制器实现USB大容量存储设备设计

1. USB大容量存储设备设计概述USB大容量存储设备&#xff08;Mass Storage Device&#xff0c;MSD&#xff09;已成为现代数字生活中不可或缺的组成部分。从U盘到移动硬盘&#xff0c;这类设备的核心都是基于USB Mass Storage Class协议实现的。本文将深入探讨如何利用PIC18F45…...

离线环境下的高效远程开发:手把手搭建VS Code Remote-SSH离线开发环境

1. 为什么需要离线远程开发环境 在不少企业研发场景中&#xff0c;开发机往往处于严格的内网隔离环境。我去年参与过一个军工项目&#xff0c;所有开发设备都禁止连接互联网&#xff0c;第一次遇到这种情况时&#xff0c;传统在线安装方式完全失效&#xff0c;团队花了整整两天…...

脉冲神经网络硬件实现:整数状态SNN的优化策略

1. 脉冲神经网络的硬件实现挑战在神经形态计算领域&#xff0c;脉冲神经网络&#xff08;SNN&#xff09;因其生物启发特性和事件驱动的计算范式&#xff0c;正逐渐成为边缘计算和低功耗AI应用的重要选择。作为一名长期从事神经形态硬件设计的工程师&#xff0c;我见证了SNN从理…...

KMS_VL_ALL_AIO:基于微软官方协议的系统激活工具技术解析

KMS_VL_ALL_AIO&#xff1a;基于微软官方协议的系统激活工具技术解析 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO KMS_VL_ALL_AIO是一款基于微软KMS&#xff08;密钥管理服务&#xff09;协议…...

构建更优Godot MCP:AI助手与游戏开发工作流深度集成方案

1. 项目概述&#xff1a;为什么我们需要一个更好的Godot MCP&#xff1f;如果你是一个长期使用Godot引擎的开发者&#xff0c;尤其是当你尝试将AI能力&#xff0c;比如大型语言模型&#xff08;LLM&#xff09;&#xff0c;集成到你的游戏开发工作流中时&#xff0c;你很可能听…...

避坑指南:Quartus II 18.1中Platform Designer配置Nios II软核的5个关键细节与常见错误

Quartus II 18.1中Platform Designer配置Nios II软核的深度避坑指南 在FPGA开发中&#xff0c;Nios II软核处理器的配置看似简单&#xff0c;实则暗藏诸多细节陷阱。许多开发者在Platform Designer&#xff08;原QSYS&#xff09;中按部就班完成配置后&#xff0c;往往会遇到各…...