我在Svc(而不是WebApi)中构建一些Web服务,我需要编写两种不同的方法(+接口)来做类似的事情:
按过滤菜单中使用的公司列出订单:
/命令/列表?企业编码= {企业编码}
按公司和供应商列出需要公司和供应商的订单(也是出于安全原因......供应商与用户相关的过滤):
/命令/ listbysup企业编码= {企业编码}&安培; suppliercode = {suppliercode}
是否可以使用可选/必需参数来编写一个Web服务?
现在我使用两种不同的方法:list vs listbysup。
也许我可以使用另一个参数作为过滤"模式"。
我也可以使用像
这样的东西var mode = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["mode"];
答案 0 :(得分:0)
是的,这完全有可能,这取决于你的回归。如果结果与方法2完全相同,那么您将供应商代码作为filter
传递,那么就没有区别了。快速检查查询字符串list?companycode={companyCode}
是否不包含&suppliercode
它告诉方法只返回没有过滤的公司代码的列表。
但是,如果结果不同,则会破坏S -> Single Responsibility
主体中的SOLID
。方法应该只有一个目的和一个目的。您可以编写代码以在一种方法中返回不同的结果,但这将是非理想的,从而产生不必要的技术债务。它也可能证明难以为复杂方法创建测试。拥有多种方法只需一个目的,使其清洁,易于维护。