简化两个Get Web服务非常相似

时间:2018-06-12 09:00:27

标签: .net web-services get svc

我在Svc(而不是WebApi)中构建一些Web服务,我需要编写两种不同的方法(+接口)来做类似的事情:

  1. 按过滤菜单中使用的公司列出订单:

    /命令/列表?企业编码= {企业编码}

  2. 按公司和供应商列出需要公司和供应商的订单(也是出于安全原因......供应商与用户相关的过滤):

    /命令/ listbysup企业编码= {企业编码}&安培; suppliercode = {suppliercode}

  3. 是否可以使用可选/必需参数来编写一个Web服务?

    现在我使用两种不同的方法:list vs listbysup。

    也许我可以使用另一个参数作为过滤"模式"。

    我也可以使用像

    这样的东西
    var mode = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["mode"];
    

1 个答案:

答案 0 :(得分:0)

是的,这完全有可能,这取决于你的回归。如果结果与方法2完全相同,那么您将供应商代码作为filter传递,那么就没有区别了。快速检查查询字符串list?companycode={companyCode}是否不包含&suppliercode它告诉方法只返回没有过滤的公司代码的列表。

但是,如果结果不同,则会破坏S -> Single Responsibility主体中的SOLID。方法应该只有一个目的和一个目的。您可以编写代码以在一种方法中返回不同的结果,但这将是非理想的,从而产生不必要的技术债务。它也可能证明难以为复杂方法创建测试。拥有多种方法只需一个目的,使其清洁,易于维护。