如何将查询字符串参数从WebAPI传递到业务层

本文关键字:业务 WebAPI 查询 字符串 参数 | 更新日期: 2023-09-27 18:28:04

Project将WebAPI公开给外部客户端,外部客户端将在查询字符串中嵌入多个参数值,这些查询字符串数据将存储在DB中。

问题我愚蠢的问题是,我应该如何将查询字符串值从WebAPI操作传递到业务层。

我可以想出两种方法:1.将完整的Request对象传递给业务层。2.将查询字符串参数转换为列表或数组,并将该列表/数组传递给业务层。

您是否认为传递请求是一种过度杀戮或对系统造成负担。我只是觉得就尺寸而言,它可能是一个重物。

如果我转换查询字符串参数,我是在做一些违背开发良好实践或Microsoft建议的事情吗?

我非常感谢你的指导。

如何将查询字符串参数从WebAPI传递到业务层

你可能认为这太夸张了,但我在描述他的Mediator库时遵循了Jimmy Bogard编写的一些指导:

https://lostechies.com/jimmybogard/2014/09/09/tackling-cross-cutting-concerns-with-a-mediator-pipeline/

要点是将传入的请求映射到DTO对象(通常是简单的数据类),并使用管道将它们向下传递到业务层。这需要映射您的请求对象,但在API(WebAPI处理)和业务域(当然,您自己的代码处理)的关注点之间提供了非常干净的分离。

我已经在基于制造的API中使用了这种方法,并取得了非常积极的结果。

业务层应该独立于调用它的层。如果将整个Request对象传递到业务层,则会将业务层与WebAPI紧密耦合,这被认为是一种糟糕的做法。想想另一个场景:如果您想从控制台应用程序或windows服务调用相同的业务层,该怎么办?当然,您不希望仅仅为了调用业务层而在那里构造一个完整的Request对象。

当您有一个从WebAPI到业务层的引用时,您应该在业务层上定义一个参数对象。因此,您的业务层可以将其用作参数,WebAPI可以在根据接收到的请求填充该参数后在方法调用中提供该参数。这促进了松耦合,并使您的业务层能够在不影响WebAPI层的情况下进行更改,反之亦然。

还可以考虑在WebAPI层中处理异常,因为在那里可以返回正确的HTTP状态代码,即找不到请求的对象时404 NOT FOUND。