[英]How to pass Query string parameters from WebAPI to business layer?
Project向外部客户端公开WebAPI,它们将在查询字符串中嵌入多个参数值,并且此查询字符串数据将存储在DB中。
问题我的愚蠢问题是如何将查询字符串值从WebAPI操作传递到业务层。
我可以想到两种方法:1.将完整的Request对象传递给业务层。 2.将查询字符串参数转换为列表或数组,然后将该列表/数组传递给业务层。
您是否认为通过Request是对系统的过度杀伤或过度使用。 我只是认为就尺寸而言,这可能是一个沉重的对象。
如果我转换查询字符串参数,是在违反开发良好实践或Microsoft的建议吗?
非常感谢您的指导。
您可能会认为这种过大的杀伤力,但是我遵循了Jimmy Bogard在描述其MediatR库时写的一些指导:
要点是将传入的请求映射到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.