我从客户端进行WCF REST api调用。为此,我使用WebChannelFactory<IRestApi>
类型的专用对象,其中IRestApi
是ServiceContract。
然后,我可以通过我使用的频道(由CreateChannel()
创建)调用IRestApi的方法。
我的问题是:我可以在此频道中添加常量参数(在我的情况下是版本号),所以我不必在每次调用中反复传递它吗?
答案 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;
}
}
这实际上可能不会被称为装饰器模式,但这个想法是重要的,而不是你所说的。