Java 与Camel集成的基于REST的服务中的API版本管理
我可以成功地创建基于Camel的应用程序,该应用程序使用REST公开一组web服务。(到目前为止,我已经使用了基于servlet的端点)。在将来,我们可能会观察到各种变化,并且在一段时间内仍然支持旧版本的API,所以我们需要支持版本控制 过去,我们通常在URL中添加参数来跟踪传入请求的API版本。我相信HTTP头也可以用于同样的目的 现在,在骆驼世界中,我们如何跟踪API的版本。(例如abja.com/v1/getOrders)Java 与Camel集成的基于REST的服务中的API版本管理,java,rest,apache-camel,esb,apache-servicemix,Java,Rest,Apache Camel,Esb,Apache Servicemix,我可以成功地创建基于Camel的应用程序,该应用程序使用REST公开一组web服务。(到目前为止,我已经使用了基于servlet的端点)。在将来,我们可能会观察到各种变化,并且在一段时间内仍然支持旧版本的API,所以我们需要支持版本控制 过去,我们通常在URL中添加参数来跟踪传入请求的API版本。我相信HTTP头也可以用于同样的目的 现在,在骆驼世界中,我们如何跟踪API的版本。(例如abja.com/v1/getOrders) 出于好奇,cxfrs或restlet是否具有内置支持?可能性1:为
出于好奇,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
}
}
);