如何使用Camel Rest DSL支持媒体类型版本控制
我正在寻找一种解决方案,在使用媒体类型版本控制对我的RESTAPI进行版本控制时使用驼峰Rest DSL。请参阅,以了解有关我试图完成的任务的详细信息 例如,如果我有一个存储对象的两个版本(V1_0和V2_0) 请注意,我在“consumes”/“Products”中指定了多种媒体类型。但是,我仅限于“type”/“outType”中的单个类 如果我尝试多行“post('/'),我会收到一个“restdsl中检测到重复动词”错误。有没有办法将媒体类型绑定到POJO 欢迎就如何使用媒体类型处理RESTAPI版本控制提出任何建议如何使用Camel Rest DSL支持媒体类型版本控制,rest,apache-camel,Rest,Apache Camel,我正在寻找一种解决方案,在使用媒体类型版本控制对我的RESTAPI进行版本控制时使用驼峰Rest DSL。请参阅,以了解有关我试图完成的任务的详细信息 例如,如果我有一个存储对象的两个版本(V1_0和V2_0) 请注意,我在“consumes”/“Products”中指定了多种媒体类型。但是,我仅限于“type”/“outType”中的单个类 如果我尝试多行“post('/'),我会收到一个“restdsl中检测到重复动词”错误。有没有办法将媒体类型绑定到POJO 欢迎就如何使用媒体类型处理RE
编辑:我还试图生成用于摇摇的规范,并且希望能够根据所选内容类型在“摇篮”UI中看到其他“示例值”。<代码>消耗,
生成
、类型
、outType
仅用于生成摇摇器规范。您可以接受/取消映射,在rest定义中的route()
指令之后,处理并封送回所需的任何格式:
诸如此类:
.post('/').description('Create a new store')
.param().name('body').type(body).description('The store to create').endParam()
.route()
.to('log:com.acme.api.store?level=INFO&showHeaders=true')
.choice()
.when(header(Exchange.CONTENT_TYPE).isEqualTo("application/x.canopy.store+json; version=1.0"))
.unmarshal(Store_V1_0)
.process(v1Processor)
.when(header(Exchange.CONTENT_TYPE).isEqualTo("application/x.canopy.store+json; version=1.2"))
.unmarshal(Store_V2_0)
.process(v2Processor)
.end()
.process(doSomethingElse)
.marshal().json()
.endRest()
我将修改我的问题,因为我应该包括我也在尝试为招摇UI生成规范。我希望能够在基于所选内容类型的Swagger UI中看到不同的“示例值”。你确实帮了我解决了部分问题。任何额外的帮助都将不胜感激!看来我应该更仔细地阅读《大摇大摆2.0规范》。我试图实现的目标还没有得到支持,但似乎在2.1中会得到支持。我会接受斯特雷洛克的回答。
.post('/').description('Create a new store')
.param().name('body').type(body).description('The store to create').endParam()
.route()
.to('log:com.acme.api.store?level=INFO&showHeaders=true')
.choice()
.when(header(Exchange.CONTENT_TYPE).isEqualTo("application/x.canopy.store+json; version=1.0"))
.unmarshal(Store_V1_0)
.process(v1Processor)
.when(header(Exchange.CONTENT_TYPE).isEqualTo("application/x.canopy.store+json; version=1.2"))
.unmarshal(Store_V2_0)
.process(v2Processor)
.end()
.process(doSomethingElse)
.marshal().json()
.endRest()