API与Camel集成的基于REST的服务版本管理



我可以成功创建基于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
            }
        }
    );

最新更新