繁体   English   中英

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

[英]How to pass Query string parameters from WebAPI to business layer?

Project向外部客户端公开WebAPI,它们将在查询字符串中嵌入多个参数值,并且此查询字符串数据将存储在DB中。

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

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

您是否认为通过Request是对系统的过度杀伤或过度使用。 我只是认为就尺寸而言,这可能是一个沉重的对象。

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

非常感谢您的指导。

您可能会认为这种过大的杀伤力,但是我遵循了Jimmy Bogard在描述其MediatR库时写的一些指导:

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

要点是将传入的请求映射到DTO对象(通常是简单的数据类),并使用管道将它们传送到业务层。 这需要您映射Request对象,但是要在API(WebAPI处理)和业务域(当然是您自己的代码处理)的关注之间实现非常清晰的区分。

我一直在基于制造业的API中使用这种方法,并取得了积极的成果。

业务层应独立于调用它的层。 如果将整个Request对象传递到业务层,则将业务层与WebAPI紧密耦合,这被认为是不好的做法 考虑另一种情况:如果要从控制台应用程序或Windows服务调用同一业务层,该怎么办? 当然,您不想在此处构造整个Request对象只是为了调用业务层。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM