Apache Camel недавно выпустил новую версию , и некоторые из новых функций были опубликованы в блоге моим коллегой Клаусом Ибсеном . Вы действительно должны проверить его запись в блоге и углубиться в детали, но одной из функций, которые я с нетерпением ждал, был новый REST DSL .
Так что же это за новый DSL?
На самом деле, это расширение для DSL маршрутизации Camel , который является мощным доменным языком для декларативного описания интеграционных потоков и доступен во многих вариантах . Это довольно круто и является отличительной чертой между библиотеками интеграции. Если вы не видели DSL Camel, вы должны проверить его. Я упоминал, что DSL Camel — это круто?
к .. вернуться к истории REST здесь ..
До выпуска 2.14 создание конечных точек отдыха подразумевало использование camel-cxfrs, что может быть затруднительно для нового пользователя, просто пытающегося предоставить простую конечную точку REST. На самом деле, это очень мощный подход к разработке REST-контракта, но я оставлю это для следующего поста в блоге. Однако в предыдущем посте я углубился в использование camel-cxfrs для конечных точек REST, чтобы вы могли проверить это.
В версии 2.14 DSL был расширен, чтобы упростить создание конечных точек REST. Например:
01
02
03
04
05
06
07
08
09
10
11
|
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 с помощью этой строки:
1
2
3
4
|
restConfiguration().component( "jetty" ) .bindingMode(RestBindingMode.json) .dataFormatProperty( "prettyPrint" , "true" ) .port( 8080 ); |
Или это в вашем весеннем контексте XML:
1
2
3
4
5
|
< camelContext > ... < restConfiguration bindingMode = "auto" component = "jetty" port = "8080" /> ... </ camelContext > |
Крутая часть заключается в том, что вы можете использовать несколько механизмов HTTP / сервлетов с таким подходом, в том числе стиль micrservices со встроенным причалом ( camel-jetty ) или через существующий контейнер сервлета ( camel-servlet ). Посмотрите документацию REST DSL для полного набора компонентов HTTP / сервлетов, которые вы можете использовать с этим DSL.
Наконец, некоторые могут спросить, как насчет документирования конечной точки REST? Например, WADL?
К счастью, новый REST DSL интегрирован из коробки с потрясающей библиотекой Swagger и механизмом документирования REST ! Таким образом, вы можете автоматически задокументировать ваши конечные точки REST и получить документацию / интерфейс / спецификацию для вас! Посмотрите документацию camel-swagger и camel-example-servlet-rest-tomcat
который поставляется вместе с дистрибутивом, чтобы узнать больше.
Попробуйте и дайте нам знать (список рассылки Camel, комментарии, stackoverflow, как-то !!!), как это работает для вас.
Ссылка: | Простые конечные точки REST с Apache Camel 2.14 от нашего партнера JCG Кристиана Поста в блоге |