Apache Camel 最近发布了一个新版本 , 其中一些新功能由我的同事Claus Ibsen博客发布 。 您确实应该检查他的博客条目并深入研究更多细节,但是我希望尝试的功能之一是新的REST DSL 。
那么,这是什么新的DSL?
实际上,它是对Camel路由DSL的扩展,后者是一种功能强大的域语言,用于以声明方式描述集成流,并且有多种形式 。 这非常棒,并且是集成库之间的区别。 如果您还没有看到Camel的DSL,则应该检查一下。 我是否提到过骆驼的DSL很棒?
k ..回到这里的REST故事..
在2.14版之前,创建其余端点意味着要使用camel-cxfrs ,对于新用户而言,仅尝试公开一个简单的REST端点可能很难实现。 实际上,这是进行合同优先REST设计的一种非常有效的方法,但我将在下一篇博客文章中介绍。 但是, 在上一篇文章中,我确实深入研究了如何将骆驼cxfrs用于REST端点,以便您可以进行检查。
在2.14版本中,DSL进行了扩展,以使创建REST端点变得更加容易。 例如:
rest("/user").description("User rest service")
.consumes("application/json").produces("application/json")
.get("/{id}").description("Find user by id").outType(User.class)
.to("bean:userService?method=getUser(${header.id})")
.put().description("Updates or create a user").type(User.class)
.to("bean:userService?method=updateUser")
.get("/findAll").description("Find all users").outTypeList(User.class)
.to("bean:userService?method=listUsers");
在此示例中,我们可以看到我们使用DSL定义了REST端点,这是清晰,直观和直接的。
您所需要做的就是使用以下代码来设置REST引擎:
restConfiguration().component("jetty")
.bindingMode(RestBindingMode.json)
.dataFormatProperty("prettyPrint", "true")
.port(8080);
或者在您的Spring上下文XML中:
<camelContext>
...
<restConfiguration bindingMode="auto" component="jetty" port="8080"/>
...
</camelContext>
最酷的部分是,您可以通过这种方法使用多个HTTP / servlet引擎,包括具有嵌入式码头( camel-jetty )或通过现有servlet容器( camel-servlet )的micrservices样式。 请参阅REST DSL文档 ,以获取可用于此DSL的完整HTTP / Servlet组件。
最后,有人可能会问,如何记录REST端点? 例如,WADL?
好吧,幸运的是,新的REST DSL与出色的Swagger库和REST文档引擎集成在一起了! 因此,您可以自动记录REST端点,并为您生成docs / interface / spec! 看一下随附的camel-swagger文档和camel-example-servlet-rest-tomcat
示例,以了解更多信息。
试试看,让我们知道(骆驼邮件列表,评论,stackoverflow,不知何故!!!)它如何为您工作。
翻译自: https://www.javacodegeeks.com/2014/10/easy-rest-endpoints-with-apache-camel-2-14.html