我從客戶端調用WCF REST API調用。爲此,我使用WebChannelFactory<IRestApi>
類型的專用對象,其中IRestApi
是ServiceContract。在靜態API調用中添加常量參數
然後,我可以通過我使用的通道(由創建)調用IRestApi的方法。
我的問題是:我可以添加常量參數到這個通道(在我的情況下是一個版本號),所以我不必一遍又一遍地在每個調用中傳遞它?
我從客戶端調用WCF REST API調用。爲此,我使用WebChannelFactory<IRestApi>
類型的專用對象,其中IRestApi
是ServiceContract。在靜態API調用中添加常量參數
然後,我可以通過我使用的通道(由創建)調用IRestApi的方法。
我的問題是:我可以添加常量參數到這個通道(在我的情況下是一個版本號),所以我不必一遍又一遍地在每個調用中傳遞它?
我不確定您的對象/接口是如何組合在一起的,您也不清楚如何將此版本發送到服務器。使用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;
}
}
這可能不是真正被稱爲Decorator模式,但這個想法是最重要的,不是你所說的。
您無法將'Version'屬性添加到'IRestApi'? – DavidG 2014-10-07 11:56:44
@DavidG,我不確定你的意思。 IRestApi是定義客戶端和服務器之間剩餘契約的接口。 IRestApi有很多方法。我可以爲這些方法中的每一個添加一個「版本」參數,但我想也許我有一個更好,更優雅的方式來做到這一點,因爲version屬性是常量(所以我想將它加載到cannel).. – user1028741 2014-10-07 12:03:11
您是否正在通過HTTP訪問API?你可以在那裏添加一個頭文件。 – DavidG 2014-10-07 12:04:55