Я не уверен, как именно ваши объекты/интерфейсы составлены вместе, и вы не знаете, как вы хотите отправить эту версию на сервер. Обычный подход с версиями 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;
}
}
Это не может на самом деле можно назвать шаблон декоратора, но идея состоит в том, что важно, не то, что вы называете.
Вы не можете добавить свойство 'Version' в' IRestApi'? – DavidG
@DavidG, я не уверен, что вы имеете в виду. IRestApi - это интерфейс, определяющий остаточный контракт между клиентом и сервером. IRestApi имеет много методов. Я могу добавить параметр «версия» к каждому из этих методов, но я подумал, что, возможно, у меня есть лучший и более элегантный способ сделать это, потому что свойство version является постоянным (поэтому я хотел бы загрузить его в cannel). . – user1028741
Получаете ли вы доступ к API через HTTP? Вы можете добавить туда заголовок. – DavidG