在rest api调用中添加常量参数

时间:2014-10-07 11:51:10

标签: c# rest wcf-rest servicecontract

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

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

我的问题是:我可以在此频道中添加常量参数(在我的情况下是版本号),所以我不必在每次调用中反复传递它吗?

1 个答案:

答案 0 :(得分:0)

我不确定你的对象/接口是如何组合在一起的,你也不清楚如何将这个版本发送到服务器。 REST API版本的常规方法是将版本放入URI中,类似于example.com/service/v8/...

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

你调用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;
  }
}

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