0

我从客户端进行 WCF REST api 调用。为此,我使用了一个类型的专用对象WebChannelFactory<IRestApi>,其中IRestApi是一个 ServiceContract。

然后,我可以通过我使用的通道(由创建)调用 IRestApi 的方法CreateChannel()

我的问题是:我可以向这个通道添加常量参数(在我的情况下是版本号),这样我就不必在每个调用中一遍又一遍地传递它?

4

1 回答 1

0

我不确定您的对象/接口是如何组合在一起的,您也不清楚您希望如何将此版本发送到服务器。REST API 版本的常规方法是将版本放入 URI,有点像example.com/service/v8/....

在这种情况下,也许您可​​以使用可以包装它的装饰器对象WebChannel(我假设这是您会调用类似.get("/some/url")on 的类型)。您的装饰器将能够“注入”额外的数据。

你调用decoratedObject.setURLPreFix("/some_serivce/v3"),然后decoratedObject.get("/some/url"),装饰器函数将被实现为......

class WebChannelDecorator{
  WebChannel channel;
  String urlPrefix = "";
  WebChannelDecorator(WebChannel c){
    channel = c;
  }
  /* methods you want to work just the same */
  T foo(args){
    return channel.foo(args);
  }
  /* methods you want to 'decorate' */
  T get(String url){
    return channel.get(urlPrefix + url);
  }
  void setURLPrefix(String prefix){
    urlPrefix = prefix;
  }
}

这实际上可能不被称为装饰器模式,但重要的是想法,而不是你所说的。

于 2015-08-19T10:31:15.683 回答