我可以成功创建基于Camel的应用程序,该应用程序使用REST公开一组web服务。(到目前为止,我已经使用了基于servlet的端点)。未来,我们可能会观察到各种变化,并在一段时间内仍然支持旧版本的API,以便支持版本控制。
过去,我们通常在URL中添加param来跟踪传入请求的API版本。我相信HTTP头也可以用于相同的目的。
现在在骆驼的世界里,我们如何才能跟踪API的版本。(例如abja.com/v1/getOrders)?
只是出于好奇,cxfrs或restlet是否可以内置支持?
可能性1:为不同版本定义单独的入口点
例如,版本1:
from("restlet:http://localhost:8080/1/users/{id}/like/{beer}")
.process(new Processor() {
public void process(Exchange exchange) {
// version 1 processing
}
);
例如,版本2:
from("restlet:http://localhost:8080/2/users/{id}/like/{beer}")
.process(new Processor() {
public void process(Exchange exchange) {
// version 2 processing
}
);
可能性2:定义一个入口点并将版本号传递给处理器
例如:
from("restlet:http://localhost:8080/{version}/users/{id}/like/{beer}")
.process(new Processor() {
public void process(Exchange exchange) {
int version = exchange.getIn().getHeader("version", Integer.class);
if (version == 1) {
// version 1 processing
} else {
// version 2 processing
}
}
);